optionalなmethodの定義方法
interface Hoge {
foo?(arg1: string): void
}
こう書けば、foo
はあってもなくてもよく、ある場合にはこの定義に従ってくれます。
公式ドキュメントですぐに探せなかった内容なので、ここで共有いたします。
GitHubでは https://github.com/microsoft/TypeScript/issues/6413
こちらに議論されています、2016年ごろにはもうあったとのこと。
知らなかったのでつらい思いをした話
このoptional methodの記法を知らなかった僕は、
関数プロパティでできるじゃん! という方法で解決していた。
すなわち下記のように、
関数プロパティでoptionalを実現
interface Hoge {
foo?: (arg1: string) => void
}
関数をプロパティとして定義するのです。
これでもまあ、ほぼやりたいことは実現できていたのですが、なんと衝撃的なことに、
という事実があり、これにハマってしまったのです。
ということで↑の記事と合わせてお読みくださいませ...