【发布时间】:2020-07-07 04:37:40
【问题描述】:
更新:感谢https://stackoverflow.com/users/5575595/drag13,完整版可以在这里找到:https://github.com/web-ridge/react-ridge-translations/blob/main/src/index.ts
我正在为 React / React Native 开发翻译库,但我无法让这些类型正常工作。
https://github.com/web-ridge/react-ridge-translations
您可以通过以下方式创建翻译
// first describe which languages are allowed/required (Typescript)
type TranslationLanguages = {
nl: string
fr: string
en: string
}
// create a translation object with your translations
export default const translate = createTranslations<TranslationLanguages>({
homeScreen:{
yesText: {
nl: 'Ja',
fr: 'Oui',
be: 'Yes',
},
welcomeText: ({ firstName }: { firstName: string }) => ({
nl: `Hoi ${firstName}`,
fr: `Hello ${firstName}`,
be: `Hello ${firstName}`,
}),
}
}, {
language: 'nl',
fallback: 'en',
})
库将对象更改为以下
{
homeScreen:{
yesText: 'Ja',
welcomeText: ({ firstName }: { firstName: string }) => `Hoi ${firstName}`,
}
}
在您的组件中,您将以这种方式使用类型
const {yesText,welcomeText} = translate.use().appScreen
它不会自动完成类型。
库代码(简体)
type val<T> = (...params: any[]) => T
type val1<T> = T
type Translations<T> = {
[group: string]: {
[key: string]: val<T> | val1<T>
},
}
type TranslationsObject<T> = {
translations: Translations<string>,
use: () => Translations<string>;
}
export function createTranslations<T>(t: Translations<T>): TranslationsObject<T>
如何让 Typescript 明白它需要自动完成?
【问题讨论】:
-
你的第一个链接返回 404 :(
-
已修复 master 分支已更改为 main
标签: reactjs typescript