diff --git a/types/react-intl/index.d.ts b/types/react-intl/index.d.ts index 8557f22cb0..7fc19e41ab 100644 --- a/types/react-intl/index.d.ts +++ b/types/react-intl/index.d.ts @@ -12,6 +12,7 @@ declare namespace ReactIntl { type DateSource = Date | string | number; + type MessageValue = string | number | boolean | Date | null | undefined; interface Locale { locale: string; @@ -69,8 +70,8 @@ declare namespace ReactIntl { formatRelative(value: DateSource, options?: FormattedRelative.PropsBase & { now?: any }): string; formatNumber(value: number, options?: FormattedNumber.PropsBase): string; formatPlural(value: number, options?: FormattedPlural.Base): keyof FormattedPlural.PropsBase; - formatMessage(messageDescriptor: FormattedMessage.MessageDescriptor, values?: {[key: string]: string | number | boolean | Date}): string; - formatHTMLMessage(messageDescriptor: FormattedMessage.MessageDescriptor, values?: {[key: string]: string | number | boolean | Date}): string; + formatMessage(messageDescriptor: FormattedMessage.MessageDescriptor, values?: {[key: string]: MessageValue}): string; + formatHTMLMessage(messageDescriptor: FormattedMessage.MessageDescriptor, values?: {[key: string]: MessageValue}): string; locale: string; formats: any; messages: { [id: string]: string }; @@ -138,7 +139,7 @@ declare namespace ReactIntl { } interface Props extends MessageDescriptor { - values?: {[key: string]: string | number | boolean | Date | JSX.Element}; + values?: {[key: string]: MessageValue | JSX.Element}; tagName?: string; } } diff --git a/types/react-intl/react-intl-tests.tsx b/types/react-intl/react-intl-tests.tsx index 25f1016026..726802a8bb 100644 --- a/types/react-intl/react-intl-tests.tsx +++ b/types/react-intl/react-intl-tests.tsx @@ -50,12 +50,12 @@ const SomeFunctionalComponentWithIntl: React.ComponentClass const formattedRelative = formatRelative(new Date().getTime(), { format: "short" }); const formattedNumber = formatNumber(123, { format: "short" }); const formattedPlural = formatPlural(1, { style: "ordinal" }); - const formattedMessage = formatMessage({ id: "hello", defaultMessage: "Hello {name}!" }, { name: "Roger" }); + const formattedMessage = formatMessage({ id: "hello", defaultMessage: "Hello {name}!" }, { name: "Roger", nullAllowed: null, undefinedAllowed: undefined }); const formattedMessagePlurals = formatMessage({ id: "hello", - defaultMessage: "Hello {name} you have {unreadCount, number} {unreadCount, plural, one {message} other {messages}}!" }, - { name: "Roger", unreadCount: 123 }); - const formattedHTMLMessage = formatHTMLMessage({ id: "hello", defaultMessage: "Hello {name}!" }, { name: "Roger" }); + defaultMessage: "Hello {name} you have {unreadCount, number} {unreadCount, plural, one {message} other {messages}}!" + }, { name: "Roger", unreadCount: 123 }); + const formattedHTMLMessage = formatHTMLMessage({ id: "hello", defaultMessage: "Hello {name}!" }, { name: "Roger", nullAllowed: null, undefinedAllowed: undefined }); return (
@@ -136,6 +136,13 @@ class SomeComponent extends React.Component + +