私はファイルnode_modules/@types/webrtc/index.d.tsを取得していますが、このコードではモジュールではありません:
import * as webrtc from "webrtc";
const peerConnection1 = new RTCPeerConnection();
npm i @types/webrtc --save-dev
を使用してタイピングをインストールしました。 const peerConnection1 = new RTCPeerConnection();
のRTCPeerConnection
にカーソルを合わせると、Visual Studio Codeで型注釈が表示されるため、少なくともコードエディターは型を認識できます。 tsc
(またはts-loader
を指定したwebpack
)の実行はエラーで失敗します。
私はこれを解決するために間違った試みでnpm i webrtc --save
を試しましたが、それは何も変えませんでしたし、とにかくタイピングが本当に欲しいだけです、WebRTCはブラウザにすぐそこにあり、そのためのパッケージは必要ありません(サポートは別として。)
index.d.ts
ファイルは実際にはモジュールではなく、インターフェースを含む他の2つのファイルを参照するだけです。だから私はimport * as webrtc from "webrtc";
を削除して、tsc
が何とかタイピングがまだ見えることを期待した。 (しかし、TypeScript構成ファイルでnode_modules
を除外しているので、それは不可能です。)それを行うと、RTCPeerConnection
が認識されなくなります。
/// <reference src="node_modules/@types/webrtc/" />
を追加しても役に立たなかった、tsc
は無効な参照ディレクティブ構文と言います。
最小限の再現でリポジトリを表示できます ここではGitLabで 。私はTypeScriptのタイピングの習得にあまり詳しくないので、これがすべて間違っている場合は私の無知を許してください。
webrtcはブラウザーの一部です。モジュールをインポートしようとしています。 (タイピング)ライブラリをインポートするだけです:
import "webrtc";
コンパイラオプションで"moduleResolution": "node"
を使用する必要がある場合があります。
または、"types": ["webrtc"]
コンパイラオプションを使用すると、コンパイラはこれらのタイプを自動的にロードします。
おそらく追加したい
"types": ["webrtc"]
tsconfig.json
に、またはあまり好ましくないが、使用する
/// <reference types="webrtc" />
ソースファイル内。 tsconfig.json
の例は次のとおりです。
{
"compilerOptions": {
"target": "es5",
"sourceMap": true,
"noImplicitAny": true,
"types": ["webrtc"]
},
"exclude": [
"node_modules"
]
}
これは、ビルドにwebrtc
宣言を含める必要があることをTypeScriptに伝えます
何もインポートする必要はありません。次を実行します。
npm install --save @types/webrtc
tsconfig.jsonの更新-
「タイプ」:["@ types/webrtc"]
別のオプションは、新しい宣言ファイル*.d.ts
をモジュールに追加することです。つまり:
declare module 'my-module';
/// <reference types="@types/<your_types_module>" />
ビルドとスタイルのニーズに応じて、これを実行する場合と実行しない場合がありますが、これは簡単な(そして汚い)修正のようです。