1
我試圖使用keyof
強制在現有的JS庫中的類型安全(所以我不能重新定義任何函數調用)。類封裝了一個數據結構,get
和set
功能,像這樣:Typescript keyof - 如何在聲明中使用該值?
到目前爲止好!但是現在我想添加一個觀察者,使用我在get
中使用的相同的keyof
功能。它的第二個參數是一個回調函數,它提供了新的和舊的密鑰值。我試着像這樣創造的:
type Callback<T, K extends keyof T> = (newValue: T[K], oldValue: T[K]) => void;
declare class Component<T> {
observe(key: keyof T, cb: Callback<T, key>)
}
但打字稿被拒絕我在observe
功能使用key
,說
找不到名字的「鑰匙」
有任何方式,我現在繞過這個限制嗎?我可以這樣做:
observe<K extends keyof T>(key: keyof T, cb: Callback<T,K>)
,它工作正常,但是這意味着我的實際代碼是:
thing.observe<"key">("key", (newValue, oldValue) => {})
這只是看起來怪怪的。
它的工作!太棒了,謝謝。 – Alastair
好!很高興幫助你:) – Diullei