我有可以转换的接口--例如,它们有nameDe
和nameFr
属性.目前,我正在try 构建一个函数,该函数仅以用户语言返回name
的对象.
这就是我到目前为止所知道的--它适用于已翻译的属性,但不适用于"未翻译的":
type TranslatedObject<T> = {
[K in keyof T as K extends `${infer Name}De` ? `${Name}` : never]: T[K extends `${infer Name}De` ? K : never];
};
interface Car {
nameDe: string,
nameFr: string,
price: number
}
const carWithUserLang: TranslatedObject<Car> = {
name: 'Make Model Trim',
price: 50000 // --> Type '{ name: string; price: number; }' is not assignable to type 'TranslatedObject<Car>'.
}
我怎么才能让它跑起来呢? Stackblitz:https://stackblitz.com/edit/typescript-h7ghdn?file=index.ts&view=editor