使用getUserMedia我想打電話getUserMedia從打字稿,是這樣的:如何從打字稿
return navigator.getUserMedia()
然而,打字稿的Navigator的定義(在lib.d.ts)不包含getUserMedia。 我該如何解決?我應該修改lib.d.ts嗎?我在哪裏做這個改變?
使用getUserMedia我想打電話getUserMedia從打字稿,是這樣的:如何從打字稿
return navigator.getUserMedia()
然而,打字稿的Navigator的定義(在lib.d.ts)不包含getUserMedia。 我該如何解決?我應該修改lib.d.ts嗎?我在哪裏做這個改變?
這個目前的做法是添加到接口,而不是編輯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
。
除了更改您可以強制轉換爲任何物體與任意波形參數的呼叫定義的,例如:
var n = <any>navigator;
n.getUserMedia = n.getUserMedia || n.webkitGetUserMedia || n.mozGetUserMedia || n.msGetUserMedia;
return n.getUserMedia({video: true, audio:true}, onSuccess, onFail);
由於這已經是很老,但人們仍有可能來這裏尋找一個答案,這裏是用分型管理所有絕對鍵入文件更新的答案:
安裝分型,Github Page,這些命令攻入了命令行(NPM需要安裝)和下載mediastream.d.ts從那裏:
npm install typings --global
typings init
typings install mediastream --ambient --save
那麼無論是從產生分型文件夾中的main.d.ts添加到您的tsconfig.json文件,或直接將它添加打印到您希望用於此行的打印稿文件:
/// <reference path="typings/main.d.ts" />
現在打字稿將識別navigator.getUserMedia()並正確編譯它。關於它的一個很酷的部分是,只要你有另一個JavaScript庫(或多或少是衆所周知的),你需要打字稿來識別你可以使用類型,你會在幾秒鐘內添加它。
導入類型定義已被simplified with TypeScript 2.0。
與NPM一個開發依賴安裝的WebRTC定義
$ npm install —save @types/webrtc
一旦安裝,使用參考指令在的.ts文件的頂部,與getUserMedia工作:
/// <reference types="webrtc" />
const getUserMedia = navigator.mediaDevices.getUserMedia ||
navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia
應做吧!
沒有msGetUserMedia。此外navigator.mediaDevices.getUserMedia是承諾的基礎,而遺留和不贊成的navigator.getUserMedia是回調based.You基本上不需要這些墊片了,只需使用navigator.mediaDevices.getUserMedia –
@PhilippHancke你對msGetUserMedia是正確的;從示例中刪除。來自我躺在身邊的一些垃圾代碼剩下的。我同意墊片不再是真正必要的,大多數都是以此爲例。 –
我不得不使用類型安裝dt〜webrtc/mediastream -SG – tredder