我想創建一個簡單的函式,它將獲取特定物件的鍵和相應鍵的值,并將新值分配給物件。像這樣的東西:
interface MyObject {
key1: string
key2: number
}
const object: MyObject = {
key1: 'abc',
key2: 100
}
const updateObjectProperty = (key: keyof MyObject, value: MyObject[keyof MyObject]) => {
object[key] = value
}
但在這種情況下 - 它不起作用。TypeScript 編譯器顯示錯誤:
Type 'string | number' is not assignable to type 'never'.
我覺得也許一些泛型可以解決這里的問題,但我正在努力弄清楚如何。
uj5u.com熱心網友回復:
如果使用泛型型別引數將引數系結在一起,它將編譯:
const updateObjectProperty = <K extends keyof MyObject>(key: K, value: MyObject[K]) => {
object[key] = value
}
updateObjectProperty("key1", "") //ok
updateObjectProperty("key2", "") // err
updateObjectProperty("key2", 2) // ok

uj5u.com熱心網友回復:
你能試一下嗎
const updateObjectProperty = <T extends keyof MyObject>(key: T, value: MyObject[T]) => {
object[key] = value
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/426685.html
上一篇:使用打字稿創建物件中鍵的聯合物件
