8

次のような TypeScript からgetUserMediaを呼び出したいと思います 。

 return  navigator.getUserMedia()

ただし、TypeScript の Navigator の定義 (lib.d.ts 内) には getUserMedia が含まれていません。どうすれば回避できますか? lib.d.ts を変更する必要がありますか? この変更はどこで行うのですか?

4

4 に答える 4

10

定義を変更する代わりに、任意のオブジェクトに任意のパラメータを使用して呼び出しをキャストできます。例:

    var n = <any>navigator;
    n.getUserMedia  = n.getUserMedia || n.webkitGetUserMedia || n.mozGetUserMedia || n.msGetUserMedia;
    return  n.getUserMedia({video: true, audio:true}, onSuccess, onFail);
于 2012-11-30T09:10:44.507 に答える
9

これに対する現在の慣行は、lib.d.ts ファイルを編集するのではなく、インターフェイスに追加することです。

TypeScript ファイルのインターフェイスに追加できます。lib.d.ts が更新されると、コンパイラはそれが不要になったことを通知します。宣言のさまざまな部分を読みやすくするために空白を追加し、インターフェイスの下にサンプル呼び出しを追加しました。

interface Navigator {
    getUserMedia(
        options: { video?: bool; audio?: bool; }, 
        success: (stream: any) => void, 
        error?: (error: string) => void
        ) : void;
}

navigator.getUserMedia(
    {video: true, audio: true}, 
    function (stream) {  },
    function (error) {  }
);

を使用するクラスでこの変更を行いますgetUserMedia。そして、すべての使用getUserMediaをそのクラスに制限しようとします。

于 2012-11-30T09:18:36.097 に答える
5

これはすでにかなり古いものですが、人々はまだ答えを求めてここに来るかもしれません.

これらのコマンドをコマンド ラインにハッキングして、typings のGithub Pageをインストールし (npm をインストールする必要があります)、そこから mediastream.d.ts をダウンロードします。

npm install typings --global
typings init
typings install mediastream --ambient --save

次に、生成されたtypingsフォルダーからmain.d.tsをtsconfig.jsonファイルに追加するか、次の行で使用するtypescriptファイルに直接追加します。

/// <reference path="typings/main.d.ts" />

typescript が navigator.getUserMedia() を認識し、正しくコンパイルするようになりました。そして、それについてのクールな部分は、別のjavascriptライブラリ(多かれ少なかれよく知られている)があるときはいつでも、タイピングを使用できることを認識するためにtypescriptが必要であり、数秒で追加されることです。

于 2016-02-03T18:49:16.220 に答える