ae-internal-missing-underscore
"名前___は、宣言が@internalとしてマークされているため、アンダースコアを前に付ける必要があります。
備考
宣言が`@internal`としてマークされている場合、名前の先頭にアンダースコア文字("_").
例えば、**widget-lib**というライブラリがあり、次のような宣言をエクスポートしているとします。
/**
* @internal
*/
export class Widget {
public render(): void {}
}
/**
* @public
*/
export class WidgetManager {
/**
* @internal
*/
public initialize(): void {}
}
// Warning: The name "Widget" should be prefixed with an underscore because
// the declaration is marked as @internal.
// Warning: The name "initialize" should be prefixed with an underscore because
// the declaration is marked as @internal.
呼び出し元がこのAPIを使用しようとすると、内部APIであることに気付かず、`Widget`または`initialize`を誤って使用しようとする可能性があります。API Extractorの.d.tsトリミング機能は、これらの宣言をTypeScript IntelliSenseから削除することで役立ちますが、この機能を使用していない場合、または型チェックを実行しないJavaScriptコードによってライブラリが使用されている場合はどうでしょうか?
これらの宣言にアンダースコアを追加すると、これらのAPIに何か特別な点があることがすぐに明らかになります。
/**
* @internal
*/
export class _Widget {
// This method is @internal, but we don't add an underscore because
// the container already has an underscore:
public render(): void {}
}
/**
* @public
*/
export class WidgetManager {
/**
* @internal
*/
public _initialize(): void {}
}
利用者のコードは次のようになる可能性があります。
import { _Widget, WidgetManager } from 'widget-lib';
let widget = new _Widget(); // <-- bad
let widgetManager = new WidgetManager();
widgetManager._initialize(); // <-- bad
アンダースコアを使用することで、この間違いを見つけやすくなります。
`Widget`クラスのすべてのメンバーにアンダースコアを追加する必要はありません。TypeScriptでは、コンテナを参照せずにこれらの項目にアクセスできないため、冗長になります。したがって、API Extractorは最外部の`@internal`コンテナについてのみ`ae-internal-missing-underscore`をチェックします。
修正方法
内部宣言の名前がアンダースコアで始まるように名前を変更します。
または、APIシグネチャの変更が大きすぎる場合は、このメッセージを無視することもできます。デフォルトでは`addToApiReportFile`レポートを使用するため、追跡のためにAPIレポートに書き込まれます。コンソール警告は生成されず、ビルドが中断されることはありません(`apiReport.enabled`がtrueに設定されていると仮定)。