TypeScriptを使っていて型定義とメソッドの戻り値を合わせるのが結構大変なことありますよね。
私もよく関数を作った時に力技で
function bindMember(){
return {
name :'hogehoge',
age : 20
}
}
という関数の戻り値で作ったオブジェクトの型を定義する時に毎回
export type MemberType = {
name: string,
age: number,
}
のようにして型定義していました。
しかしTypeScriptのドキュメントを読んでいるとReturnType
という関数の戻り型を取得してくれる機能を発見しました。
ReturnType
— Obtain the return type of a function type.
type ReturnType<T extends (...args: any[]) => any>
使い方は簡単で、
export type MemberType = ReturnType<typeof bindMember>
と記述すればMemberTypeの戻り値の型を設定してくれます。
{
name: string,
age: number,
}
と定義されるようになりました。