@types/hapi
に依存するノードアプリケーションがあります。このモジュールで定義されているクラスの1つにプロパティを追加したいと思います。私は、モジュールの増強を経由して私の新しいプロパティを定義しようとしました:モジュールの増強による既存のTypeScriptインターフェイスへのプロパティの追加は無効です
// my-custom-hapi-typings.d.ts
import * as hapi from 'hapi';
declare module hapi {
interface Server {
myProperty: string;
}
}
これは、任意のコンパイルエラーが発生することはありませんが、それはまたServer
クラスにmyProperty
プロパティを追加しません。私がしようとすると、このようなプロパティを参照するとき、私はまだ他の場所で私のプロジェクトでエラーが発生します:
// my-other-file.ts
import * as hapi from 'hapi';
const server = new hapi.Server({ ... });
// error: Property 'myProperty' does not exist on type 'Server'.
server.myProperty = 'hello';
活字体のコンパイラは私の.d.ts
ファイルを無視しているように見えるのはなぜ?ファイルを "インポート"する必要がありますか、何らかの理由でこのファイルが存在することをTypeScriptコンパイラに認識させますか?私は、.d.ts
ファイルをソースディレクトリに配置するだけで、TypeScriptがこれらの機能強化を引き受けるのに十分であるという印象を受けました。
トップレベルの 'import'はファイルをモジュールにします。削除してください。 – Aaron
@Aaronさん、ありがとうございましたが、トップレベルの 'import'を削除しようとしましたが、結果は同じです。 –
"hapi"を引用符で囲みます: 'declare module" hapi "' 'Server'インターフェースを' export 'する必要があるかもしれません。 – Aaron