[解決済み] 2つのインターフェイスを統合する
質問
確認や説明を求める
2 つのインターフェイスがある場合。これら 2 つのインターフェースのマージを作成するための適切な方法は何ですか?
IFoo {
// some stuff
}
IBar {
// some stuff
}
IFooBar extends IFoo, IBar {
// Empty
}
動作はしますが、空のIFooBarでやり方が間違っているような変な感じがします。
私はこれを正しくやっているのでしょうか?
私はまた、これも動作することに気づきました。
type IFooBar = IFoo & IBar;
を使うことに非論理的な嫌悪感を抱いています。
type
を使うことに非論理的な嫌悪感があるのですが、それでもこの方がずっとすっきりしています。
どのように解決するのですか?
この記事 は、インターフェースとタイプエイリアスの関係について非常によく説明しています。 この部分 は両者の小さな違いに焦点をあてています。
どちらも
interface IFooBar extends IFoo, IBar {}
と
type IFooBar = IFoo & IBar;
は一般的な方法で、ほとんどの場合同じように動作します。したがって
type
は入力する文字数が少ないので、そのような理由で選ばれるかもしれません。
が混在することで発生する不整合は
interface
と
type
は問題ないはずです。これらは目標を達成するために適した機能であるだけです。もし
const BarClass = FooClass
が仕事をするのであれば
class BarClass extends FooClass {}
が一貫して使われているからといって、優先されるべきではないでしょう。
class
を使うからというだけで、優先されるべきではありません (この例は説明のために使用されていますが、これらのアプローチにはかなりの違いがあります)。
にもかかわらず
interface
と
type
は同じように動作しますが、マージされたインターフェイスの場合には違いがあります(リンク先の記事でも取り上げています)。これはうまくいくでしょう。
interface FooBar extends IFoo, IBar {}
class FooBar { ... }
そして、これはタイプエラーの原因となります。
type FooBar = IFoo & IBar;
class FooBar { ... }
関連
-
[解決済み】TypeScriptのインターフェースと型について
-
[解決済み] コンストラクトシグネチャを持つインターフェースはどのように機能するのですか?
-
[解決済み] タイプスクリプト ネストされたオブジェクトのインターフェースはどのように定義するのですか?
-
[解決済み] ts ES5/ES3の非同期関数やメソッドには、「Promise」コンストラクタが必要です。
-
[解決済み] Angular 2とTypeScriptで2つのオブジェクト配列をマージする?
-
[解決済み] 文字列ユニオンから文字列配列へ
-
[解決済み] TypeScriptでObject.keysがkeyof型を返さないのはなぜですか?
-
[解決済み] Visual Studio Code - インポート引用符の設定を調整する
-
[解決済み] TypeScript "this" scoping issue when called in jquery callback.
-
[解決済み] TypeScriptをminifiedコードにコンパイルすることは可能ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ts ES5/ES3の非同期関数やメソッドには、「Promise」コンストラクタが必要です。
-
[解決済み] tsconfig.jsonのtargetは何のためにあるのですか?
-
[解決済み] Typescript のプリミティブ型:"number" と "Number" の違い(TSC は大文字と小文字を区別しない)?
-
[解決済み] グローバルスコープの拡張は、外部モジュールまたはアンビエントモジュール宣言にのみ直接ネストすることができます(2669)
-
[解決済み] typescriptでmoment.jsをインポートするには?
-
[解決済み] Promiseの型はどのようにアンラップするのですか?
-
[解決済み] tsconfigの "target "と "module "を理解する。
-
[解決済み] Typescript で Enum を制限付きキータイプとして使用する
-
[解決済み] TypeScriptで強く型付けされた配列の作成
-
[解決済み] TypeScript Genericsに複数の型制約を指定することは可能か?