[英]Maintain object value types for each key when reassigning values
const obj = {
a: 1,
b: 'foo',
};
for (const k of (Object.keys(obj) as (keyof typeof obj)[])) {
obj[k] = obj[k];
}
我越來越:
Type 'string | number' is not assignable to type 'never'.
Type 'string' is not assignable to type 'never'.
obj
對每個鍵都有不同的值類型,我想維護每個鍵的值類型。 換句話說,我希望obj.a
保持number
和obj.b
保持string
。 我假設發生此錯誤是因為 TS 期望obj[k]
的類型為string | number
string | number
。
有沒有辦法讓 TS 為每個鍵保持正確的值類型?
這是一種方法,使用 generics 將密鑰作為類型K
而不是作為運行時值k
獲取:
const obj = {
a: 1,
b: 'foo',
};
function set<K extends keyof typeof obj>(k : K) {
obj[k] = obj[k];
}
for (const k of (Object.keys(obj) as (keyof typeof obj)[])) {
set(k);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.