Typescript API はどのようにして内部メンバーを非表示にするのか? 質問する

Typescript API はどのようにして内部メンバーを非表示にするのか? 質問する

TS と JS コードから呼び出されるライブラリを TS で構築し、内部メソッドとフィールドを非表示にする方法を知りたいです。Java にはこれを処理するためのパッケージ可視性があります。TS にはそれがないため、2 つのオプションがあります。

  1. 特定のメンバーのみを公開するようにインターフェースを定義します。ただし、これには定義の複製と、インターフェースから実装タイプに引数をキャストするための追加コードが含まれます。

  2. 内部メンバーに @private ドキュメントコメントを配置します。生成されたドキュメントからこれを除外することもできます。

注: private 修飾子は、同じクラスのコードへのアクセスのみを許可するため、解決策ではありません。同じライブラリ内の他のクラスのフィールドにアクセスする必要性について話しているのですが、ライブラリのクライアントからのアクセスは禁止されています。これが、Java のパッケージ アクセスの機能です。

ベストアンサー1

TypeScript 3.1 以降では、stripInternalコンパイラ オプションを使用できます。宣言ファイルを生成するときに、これにより、JSDoc アノテーションを持つコードの宣言が生成されなくなります@internal

このコンパイラ オプションは次のファイルで有効にできますtsconfig.json

{
    "compilerOptions" : {
        ...
        "stripInternal": true
    }
}

たとえば、次の宣言は抑制されます。

//Class will not be visible
/** @internal */
export class MyHelperClass {

}

export class MyPublicClass {
    //Method will not be visible
    /** @internal */ 
    helperMethod() {}
}

// Binding will not be visible
/** @internal */
export const MyValue = 5;

*.tsただし、これは、独自のコードなど、ソース ファイルを参照するコードには影響しません。

*.jsほとんどの NPM パッケージのように、パッケージをと のファイルの組み合わせとして配布すると*.d.ts、パッケージ外のコードからメンバーが効果的に隠されます。ただし、コードを*.tsファイルとして配布する場合は役に立ちません。

おすすめ記事