1
私はkeyof
を使用して、既存のJSライブラリで型の安全性を強化しようとしています(したがって、関数呼び出しを再定義することはできません)。クラスはそうのように、get
とset
機能で、データ構造をラップ:Typescript keyof - 宣言で値を使用する方法?
これまでのところは良いです!しかし今、私はget
で使用している同じkeyof
機能を使用してオブザーバを追加したいと思います。その2番目のパラメータはコールバックであり、提供されたキーの新しい値と古い値が与えられます。私はそうのようにそれを作成しようとしました:
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