From 95489ddef0bd79df380d04c4ef601e3a7f1bb9ad Mon Sep 17 00:00:00 2001 From: Pedro Durek Date: Sat, 12 Nov 2022 09:35:23 -0700 Subject: [PATCH] Change `DefaultTFuncReturn` to return `null` if `returnNull` typeOption is true (#1865) * Change DefaultTFuncReturn to return null if returnNull typeOption is true * Fix tests --- index.d.ts | 2 +- test/typescript/custom-types/i18next.d.ts | 1 + test/typescript/custom-types/t.test.ts | 7 +++++++ test/typescript/t.test.ts | 7 ------- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/index.d.ts b/index.d.ts index 01fb68b30..d28c6fc9f 100644 --- a/index.d.ts +++ b/index.d.ts @@ -860,7 +860,7 @@ type NormalizeMultiReturn = V extends `${infer N}:${infer R}` : never : never; -export type DefaultTFuncReturn = string | undefined | null; +export type DefaultTFuncReturn = string | (TypeOptions['returnNull'] extends true ? null : never); export type DefaultTFuncReturnWithObject = DefaultTFuncReturn | object | Array; diff --git a/test/typescript/custom-types/i18next.d.ts b/test/typescript/custom-types/i18next.d.ts index 1a5b39149..562adbfb3 100644 --- a/test/typescript/custom-types/i18next.d.ts +++ b/test/typescript/custom-types/i18next.d.ts @@ -3,6 +3,7 @@ import 'i18next'; declare module 'i18next' { interface CustomTypeOptions { defaultNS: 'custom'; + returnNull: false; resources: { custom: { foo: 'foo'; diff --git a/test/typescript/custom-types/t.test.ts b/test/typescript/custom-types/t.test.ts index b31f16acd..634e2e33e 100644 --- a/test/typescript/custom-types/t.test.ts +++ b/test/typescript/custom-types/t.test.ts @@ -45,3 +45,10 @@ function i18nextTPluralsUsage() { i18next.t('plurals:foo', { count: 1 }); i18next.t('plurals:foo_many', { count: 10 }); } + +// @ts-expect-error +function returnNullWithFalseValue(t: TFunction) { + function fn(value: null) {} + // @ts-expect-error + fn(t('foo')); +} diff --git a/test/typescript/t.test.ts b/test/typescript/t.test.ts index 0bfc3df9c..343c876f0 100644 --- a/test/typescript/t.test.ts +++ b/test/typescript/t.test.ts @@ -43,13 +43,6 @@ function callsMethodWithOptionalNullArg(t: TFunction) { displayHint(t('friend')); } -function callsMethodWithOptionalArg(t: TFunction) { - function displayHint(hint?: string) { - return String(hint); - } - displayHint(t('friend')); -} - function callsMethodWithRequiredNullArg(t: TFunction) { function displayHint(hint: string | null) { return String(hint);