TypeScript がジェネリック型を推論する流れ
type MyEvent<T> = {
target: T
type: string
}
function triggerEvent<T>(event: MyEvent<T>){
//...
}
triggerEvent({
target: document.querySelector('#myButton'),
type: 'mouseover'
})
- triggerEventを、オブジェクトを渡して呼び出す
- TypeScriptは関数のシグネチャから、渡された引数がMyEvent<T>という型をもっていなければならないことを理解する。また、MyEvent<T>が {target:T, type: string}が定義されていることに気が付く
- TypeScriptは、渡されたオブジェクトのtargetフィールドdocument.querySelectorであることを理解する。ここからTからElement | null であることを理解する
- すべてのTをElement | nullに置き換える
- 型が割り当て可能かをチェックする
最近のコメント