logo
/
TypeScriptは関数オブジェクトのプロパティを追加することもできる
この様に書いた場合
const toast = (msg:string) => console.log(msg)
toast.close = () => {}
toast.open = () => {}
このように型推論される
const toast: {
	(msg: string): void;
	close(): void;
	open(): void
}
この型定義もできる
type T = 
{ 
	(msg: string): void
	close: () => void; 
	open: () => void
};

const toast: T = ...
toast.closeであとから追加してるからtoast: Tの時点ではエラーがでそうなもんだけどちゃんと後の記述も見てくれてエラーが出ないようになってる。