TypeScript 入門 利用例 オブジェクトの型

TypeScriptなしで書いてみる

第一引数で受け取ったオブジェクトのidプロパティが、第二引数の値と同じであれば true、異なれば false を返す関数を書いてみます。

function checkId(item, id){
	return item.id === id
}

console.log(checkId({id: 100, value: 200}, 100)) //true
console.log(checkId({id: 100, value: 300}, 200)) //false

第一引数のオブジェクトは id というプロパティを持つことを前提に書かれています。

しかし、間違って id を持たないオブジェクトを渡した場合、この関数の意図とは異なる動きになります。

console.log(checkId({name: 100, value: 100}, 100)) 
// 値としては 100 で一致するけど、id がないので false になる

できれば第一引数のオブジェクトは id を持つことを強制できたら良いです。

TypeScriptを使う

第一引数のオブジェクトの型をItemとして定義しました。

type Item = {
    id: number,
    [prop: string]: any
};

function checkId(item: Item, id: number){
	return item.id === id
}

console.log(checkId({id: 100, value: 200}, 100)) //true
console.log(checkId({id: 100, value: 300}, 200)) //false
console.log(checkId({name: 100, value: 100}, 100)) // id というプロパティがないのでコンパイルエラー

このようにすることで、誤って id がないオブジェクトを引数にした場合に、Typeエラーになるので事前に検知できます。