[解決済み] 2つのインターフェイスを統合する
2022-02-16 21:14:12
質問
確認または説明を求める
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 { ... }
関連
-
[解決済み] Webpack with typescriptでTypeScript emitted no outputエラーが発生する。
-
[解決済み] TypeScript - Angular: 複数行の文字列
-
[解決済み] tsc がプロジェクトのコンパイルに成功すると、ts-node は d.ts ファイルを無視します。
-
[解決済み] TypeScriptで文字列を数値に変換する方法とは?
-
[解決済み] クラス定数を実装するには?
-
[解決済み】TypeScriptのインターフェースと型について
-
[解決済み】Visual Studio Codeで.js.mapファイルを非表示にする方法
-
[解決済み】タイプからプロパティを除外する
-
[解決済み] コンストラクトシグネチャを持つインターフェースはどのように機能するのですか?
-
[解決済み] タイプスクリプト ネストされたオブジェクトのインターフェースはどのように定義するのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Typescript : require文はimport文の一部ではない
-
[解決済み] Jest で typescript を使用して identity-obj-proxy を使用すると未定義が返される
-
[解決済み] ts1206 デコレーターはここでは無効です、Angular 2。
-
[解決済み] 2つのインターフェイスを統合する
-
ts 学習日記1 AssertionError [ERR_ASSERTION]: タスク関数を指定する必要があります
-
[解決済み] TSがモジュールを見つけ出せない
-
[解決済み] tsc がプロジェクトのコンパイルに成功すると、ts-node は d.ts ファイルを無視します。
-
[解決済み] TypeScriptのsetTimeoutはどのような戻り値型を使用すればよいですか?
-
[解決済み] メインとテストのコンパイルを分離するために、typescriptコンパイラ(tsc)のオプションはどのように設定するのが正しいのでしょうか?
-
[解決済み] クラスのプロパティが整数であることはどのように指定するのですか?