From 0c9f8c9cec78dc59cfd73e171b330d5fc83045b6 Mon Sep 17 00:00:00 2001 From: Adriano Raiano Date: Tue, 13 Dec 2022 08:08:36 +0100 Subject: [PATCH] types: fix some strang t function overloads, fixes #1882 --- CHANGELOG.md | 4 ++++ index.d.ts | 10 +++++----- test/typescript/custom-types/i18next.d.ts | 3 +++ test/typescript/custom-types/t.test.ts | 2 ++ 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 99c93fb0..77f8807e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 22.4.4 + +- types: fix some strang t function overloads fixes [1882](https://github.com/i18next/i18next/issues/1882) + ## 22.4.3 - types: t function overloads fix (open issue is still calling t with optional options argument) diff --git a/index.d.ts b/index.d.ts index 08888c2f..c302ed97 100644 --- a/index.d.ts +++ b/index.d.ts @@ -892,7 +892,7 @@ export interface TFunction< key: TKeys | TKeys[], ): TFuncReturn; < - TKeys extends TFuncKey | TemplateStringsArray extends infer A ? A : never, + TKeys extends TFuncKey, TDefaultResult extends DefaultTFuncReturn = string, TInterpolationMap extends object = StringMap, PassedNS extends Namespace = N extends string ? N : N extends unknown ? DefaultNamespace : N, @@ -902,7 +902,7 @@ export interface TFunction< // with returnDetails: true, returnObjects: true and ns prop in options < - TKeys extends TFuncKey | TemplateStringsArray extends infer A ? A : never, + TKeys extends TFuncKey, TDefaultResult extends DefaultTFuncReturnWithObject = object, TInterpolationMap extends object = StringMap, PassedNS extends Namespace = N extends string ? N : N extends null ? DefaultNamespace : N, @@ -917,7 +917,7 @@ export interface TFunction< // with returnObjects: true and ns prop in options < - TKeys extends TFuncKey | TemplateStringsArray extends infer A ? A : never, + TKeys extends TFuncKey, TDefaultResult extends DefaultTFuncReturnWithObject = object, TInterpolationMap extends object = StringMap, PassedNS extends Namespace = N extends string ? N : N extends null ? DefaultNamespace : N, @@ -928,7 +928,7 @@ export interface TFunction< // with passed ns prop in options < - TKeys extends TFuncKey | TemplateStringsArray extends infer A ? A : never, + TKeys extends TFuncKey, TDefaultResult extends DefaultTFuncReturn = string, TInterpolationMap extends object = StringMap, PassedNS extends Namespace = N extends string ? N : N extends null ? DefaultNamespace : N, @@ -987,7 +987,7 @@ export interface TFunction< TInterpolationMap extends object = StringMap, >( key: TKeys | TKeys[], - options?: TOptions, + options: TOptions, ): TFuncReturn; // defaultValue diff --git a/test/typescript/custom-types/i18next.d.ts b/test/typescript/custom-types/i18next.d.ts index 562adbfb..70cb262d 100644 --- a/test/typescript/custom-types/i18next.d.ts +++ b/test/typescript/custom-types/i18next.d.ts @@ -8,6 +8,9 @@ declare module 'i18next' { custom: { foo: 'foo'; bar: 'bar'; + baz: { + bing: 'boop'; + }; }; alternate: { baz: 'baz'; diff --git a/test/typescript/custom-types/t.test.ts b/test/typescript/custom-types/t.test.ts index 4ea51f7b..48d3bf53 100644 --- a/test/typescript/custom-types/t.test.ts +++ b/test/typescript/custom-types/t.test.ts @@ -50,6 +50,8 @@ function i18nextTUsage() { i18next.t('bar', { ns: 'alternate' }); // i18next.t('bar', {}).trim(); i18next.t('bar').trim(); + i18next.t('baz.bing').trim(); + i18next.t('alternate:foobar.barfoo').trim(); i18next.t('custom:bar', { defaultValue: 'some default value' }); i18next.t('custom:bar', 'some default value');