前提
他言語の経験はありますが、TypeScriptは最近使い始めました。
調べて思うのが、interfaceに変数をもたせるといいますか、例えばC言語でいう構造体のような使い方をinterfaceで実現している場合が多いように感じます。
interfaceは関数定義だけをするもので、実装や実装に必要な変数は実クラス等の実装時に宣言するものだと認識しています。
一般的にどうなっているのかと思いnode_modulesに入っている適当なパッケージを見てみたりもしたのですが、types/*.d.tsに変数をもたせたinterfaceを定義している場合が多いように思いました。
例
ts
1export interface Payload { 2 type: string; 3}
質問
構造体のようなものを定義したいのであれば、typeや関数を持たないclassを使えば良さそうなのに、なぜinterfaceを使うのでしょうか?
自分なりに考えてみた回答
- classは後から導入されたのであまり使う文化がなく昔からの名残でinterfaceを利用
- コンストラクタを書くのが面倒
- そもそもtsでは関数や変数というよりオブジェクトとしてざっくり扱っている(?)のであまり区別しない
あまりts, jsに詳しくなく、そもそもおかしなことを言っていましたら申し訳ありません。
interfaceとtypeの違いなどは調べるとたくさん出てくるのですが、classとinterfaceの比較や、そもそも構造体のようにinterfaceを使う文化についてはうまく調べられず質問させていただきました。
ご回答よろしくお願いいたします。
あなたの回答
tips
プレビュー