![](/img/trans.png)
[英]How do you define a TypeScript interface with a Key String index but known keys with specific types?
[英]Typescript interface specific keys different than index
我有一個 object幾乎所有字符串,除了幾個鍵(已知)是string[]
。
Interface MostlyStrings{
[key:string]:string,
specificKey1:string[],
specificKey2:string[],
}
這不起作用,因為string[]
與索引不匹配。
我想避免[key:string]:string|string[]
因為那樣我必須在所有代碼中指定字符串和數組。
是否可以接口除了幾個已知鍵之外的所有內容都是string
?
過去幾年一直在跟蹤的 TS repo 上有一個未解決的問題。 目前,無法做到這一點。
您可以通過使用交集類型來實現類似的效果:
type MostlyStrings = {
[key: string]: string;
} & {
specificKey1: string[];
specificKey2: string[];
};
您將無法構造此類型的 object 文字,但它至少會正確地進行類型檢查/自動完成。 在實踐中,您只需要執行您在示例中所做的操作並更新索引簽名以包含已知屬性的類型,即使它不能准確反映您的意圖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.