typescript - Přepsání i18next TFunction pomocí výčtu z jiného souboru
Snažím se přepsat TFunction balíčku i18next.
To, čeho se snažím dosáhnout, je zajistit typizaci použitých i18n klíčů takto:
t('invalid-key') // is invalid
t('key1') // is valid
Tak jsem vytvořil následující soubor i18next.d.ts pro přepsání typu TFunction:
type Keys = 'key1' | 'key2'
declare module 'i18next' {
export type TFunction = (key: Keys) => string
}
Funguje to, ale jakmile se pokusím importovat ten typ z jiného souboru, typ TFunction se vrátí k původnímu.
Má někdo nápovědu, jak mi pomoci importovat klíče v deklaracím souboru?
Divně import funguje, když to udělám přes hook useTranslation balíčku react-i18next:
import { I18nKey } from '../modules/core/i18n/i18nKey'
declare module 'react-i18next' {
export function useTranslation(): {
t: (key: I18nKey) => string
}
}
Odpověď č. 1
Pokud v souboru deklarace exportujete Keys, soubor deklarace se stane modulem. To způsobí, že TypeScript nebude soubor zahrnovat globálně. Vytvořte samostatný soubor pro declare module, aby byl zahrnut globálně.
Pokud chcete importovat do globálního souboru, který deklaruje modul, měli byste je importovat uvnitř modulu takto.
declare module 'react-i18next' {
import { I18nKey } from '../modules/core/i18n/i18nKey'
export function useTranslation(): {
t: (key: I18nKey) => string
}
}
