`d.ts`ファイル内で` export`を使用することは意味がありますか?
アプリでグローバルに使用されているタイプのファイルを作成しようとしています。
reduxState.d.ts
declare namespace MyProject {
type Type1 = someType;
interface SomeInterface {
someProperty: someType
}
}
上記のコードをnamespace
使用すると、プロジェクトファイル全体で自分とそのメンバーが利用可能になっていることがわかります。
では、上記のコードexport
と、namespace
メンバーに使用する次のコードの違いは何ですか?
declare namespace MyProject {
export type Type1 = someType;
export interface SomeInterface {
someProperty: someType
}
}
どちらも問題なく動作しているようです。違いはなんですか?
から: https://www.typescriptlang.org/docs/handbook/namespaces.html#namespacing
ここでのインターフェースとクラスを名前空間の外部に表示したいので、それらの前にexportを付けます。
このDOCからの抜粋では、ファイルではなく、namespace
内で宣言されているを参照しているts
ようd.ts
です。export
その場合、それが必要なのはそのためですか?
ファイルexport
内で使用することはまったく意味がありd.ts
ますか?
回答
*.d.ts
ファイルは定義用であり、実行時に完全に無視されます。ライブラリなどがあるためにJSコードを作成する場合は、exportキーワードを使用することを強くお勧めします。これにより、他のユーザーがコードから何を使用できるか(自分では使用できないもの)を簡単に確認できるようになります。エクスポート、明らかに他の場所にインポートすることはできません)。
今あなたのユースケース:namepsaceからエクスポートされたものはすべて、外部で独立して使用できます。つまり、あなたは次のようなことをすることができます
const obj: MyProject.SomeInterface = { someProperty: 20 };
*.d.ts
ファイルではなく*.ts
ファイルを使用しているので、インターフェイスをエクスポートするだけであれば、コンパイル時に省略されるため、違いはありません。
最後にもう1つ注意してください。*.d.ts
ファイルを使用すると、プロジェクト全体で自分のものを確認できますが、そこから関数または類似のものをインポートする場合は、最初にそれらをインポートする必要があります。