[英]Is there a way to dynamically generate members in a TypeScript definition?
我不認為這個問題的標題很好,但我很難想出更好的東西,所以現在就可以了。
我也相當確定我想要的東西不被支持,但我很想被證明是錯誤的!
我有一個正在調用的 API,它根據查詢改變返回的對象中的成員名稱。
例如
GetInfo(languages?:string[]);
GetInfo() => { name: "Cologne" };
GetInfo(["en", "de"]) => { name: "Cologne", name_en: "Cologne", name_de: "Köln" };
有沒有辦法創建一個定義來“生成” name_{language} 成員?
不支持以這種方式操作屬性名稱(即將一個字符串連接到另一個字符串並使其成為類型檢查屬性)。
您能做的最好的事情不僅僅是返回一個屬性與語言名稱同名的對象:
function GetInfo<T extends string>(langs: T[]): Record<T | 'default', string>{
return null as any;
}
let values = GetInfo(["en", "de"]) // values is { en: string; de: string; default: string }
values.default
values.de
values.en
GitHub 上有一個問題建議添加對字符串文字操作的支持,但目前在路線圖上還沒有
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.