これらのフロータイプ定義の違いは何ですか?フローインターフェイスとタイプ
interface Vehicle {
start(): void,
stop(): void
}
type Vehicle = {
start(): void,
stop(): void
};
私の知る限り、これらは同じ方法で使用できます。
これらのフロータイプ定義の違いは何ですか?フローインターフェイスとタイプ
interface Vehicle {
start(): void,
stop(): void
}
type Vehicle = {
start(): void,
stop(): void
};
私の知る限り、これらは同じ方法で使用できます。
interface
sとtype
sは似ていますが、その違いは主に私が信じる歴史的なものです。最近実施されたproperty varianceの変更により、の動作がinterface
の動作に沿ってより多く発生しました。私は最終的にそれらを同一にし、場合によってはinterface
を取り除くことを目標としています。
まだ微妙な違いがあるかもしれませんが、ほとんどの用途で私はあなたに違いがあるとは思わないと思います。ないtype
-
一つの大きな違いは、あなたがimplements
(例えばclass Foo implements Bar {...}
)を使用したい場合は、その後Bar
はinterface
でなければならないということです。しかし、クラスをマーキングすることは、インターフェースを実装することが必須ではないことに注意する価値があります。フローは構造的なサブタイプ化を実装しているので、クラスインスタンスがあれば、そのクラスが特定のインタフェースを実装していることを明示的に示さなくても互換性のあるものを期待するものに渡すことができます。