[英]TypeScript Suggested keys in object
我想定義一個 TypeScript 類型,這會在編輯器中建議(首選) object 鍵,但我不想限制用戶定義任意鍵。
所以我定義了以下類型:
type SuggestedProperties = 'click' | 'change' | 'blur' | string;
這些是首選屬性: 'click' | 'change' | 'blur'
'click' | 'change' | 'blur'
'click' | 'change' | 'blur'
(但我確實想允許任意string
。)
type SuggestedKeysType = Partial<{ [key in SuggestedProperties]: any }>;
現在我想讓編輯告訴我這些: 'click' | 'change' | 'blur'
'click' | 'change' | 'blur'
首先是'click' | 'change' | 'blur'
。
是否可以? 我的例子正確嗎? Visual Studio 代碼/ stackblitz :
我不知道是否存在更好的解決方案,但這種方式有效:
type MyObj = Partial<
{
[key in SuggestedProperties]: any;
} & {
[index: string]: any;
}
>;
自動完成將首先建議 SuggestedProperties,您可以傳遞任何其他屬性
如果你添加| string
| string
到SuggestedProperties
,然后整個類型將急切地減少為string
。 所有的string
文字類型都將被吸收到聯合中,然后編譯器和您的 IDE 將完全忘記它們:
type Oops = 'a' | 'b' | string;
// type Oops = string
相反,您應該使SuggestedKeysType
成為具有已知鍵和字符串索引簽名的類型,可能如下所示:
type SuggestedProperties = 'click' | 'change' | 'blur';
type SuggestedKeysType = { [K in SuggestedProperties]?: any } & { [k: string]: any }
然后你會得到你期望的建議:
const myObject: SuggestedKeysType = {
foo: 1,
bar: 2,
click: 3,
// Suggestions here:
// ☐ blur, (property) blur?: any
// ☐ change, (property) change?: any
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.