[解決済み] TypeScriptの円形型参照
2022-02-15 08:20:24
質問
私はtypescriptの初心者で、2つの型の間に循環参照を設定する方法を理解しようとしています。 この参照は完全なコード参照である必要はなく、単にインターフェースだけで、インターフェースは別々のファイルに定義されています。 例えば、私が2つのインターフェースを持っているとします。親と子です。 それらは、親が子のコレクションを持ち、各子が親への参照を持つように、二重にリンクされています(下図参照)。 これらを別々のファイルで定義できるように、インポートや依存関係を設定するにはどうしたらよいでしょうか。
interface Parent {
children: Child[]
}
interface Child {
parent: Parent
}
解決方法は?
以下、2つの解決策を紹介します。私は後者の方がNode JSモジュールときれいに連携できるので好きですが、残念ながら私のIDEは(まだ)私ほどには好きではありません...。
リファレンスを使用する
を作成します。
definitions.d.ts
このファイルには、クラスやインターフェイスへの参照のみが含まれます。
/// <reference path="Parent.ts" />
/// <reference path="Child.ts" />
で
Parent.ts
と
Child.ts
は、1つの参照を指し示す。
definitions.d.ts
ファイル
/// <reference path="definitions.d.ts" />
インポートを使用する...require
を渡す。
--module commonjs
フラグを
tsc
では
import
なにそれ
require
と
export
公開したいもの
Parent.ts 内
import Child = require('Child')
interface Parent {
children: Child[]
}
export = Parent
Child.tsにて
import Parent = require('Parent')
interface Child {
parent: Parent
}
export = Child
で拡張子 '.ts' を指定しないことに注意してください。
require
関連
-
[解決済み】Typescriptで、! (エクスクラメーションマーク/バン)演算子でメンバを再参照するのは?
-
[解決済み] 未使用のパラメータに対する型チェックをスキップする
-
[解決済み] エラー TS2345: 型 'T' の引数は型 'object' のパラメータに代入できません。
-
[解決済み] TypeScriptで文字列を数値に変換する方法とは?
-
[解決済み] TypeScript で `window` に新しいプロパティを明示的に設定するにはどうすればよいですか?
-
[解決済み] TypeScriptでの取得と設定
-
[解決済み] TypeScriptでパラメータとして強く型付けされた関数は可能か?
-
[解決済み] TypeScriptのオブジェクトリテラルでの型定義
-
[解決済み】TypeScriptのインターフェースと型について
-
[解決済み】Typescriptのパラメータ名のクエスチョンマークとは?
最新
-
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文の一部ではない
-
[解決済み] ts1206 デコレーターはここでは無効です、Angular 2。
-
[解決済み] サービスにDocumentを挿入する方法は?
-
[解決済み] TypeScriptの "*.d.ts "について
-
[解決済み] String型とstring型の違いは何ですか?
-
[解決済み] チェックした後に○○の表現が変わっている
-
[解決済み] types/* を `dependencies` と `devDependencies` のどちらに入れるかは、どのように決めたらよいですか?
-
[解決済み】TypeScriptの "not assignable to parameter of type never "エラーとは?
-
[解決済み】WebStorm/PhpStormのダブルクォートでTypeScriptの自動インポートを行う。
-
[解決済み] TypeError: クラスが拡張する値undefinedは関数でもNULLでもない