2012-11-30 3 views
3

에서에서 getUserMedia를 사용하는 방법은, 타이프 라이터에서 뭔가를 getUserMedia를 호출하고 싶습니다. 어떻게 해결할 수 있습니까? lib.d.ts를 수정해야합니까? 이 변경은 어디에서해야합니까? 대신 당신이 어떤 객체에 arbitray, 매개 변수와 함께 전화를 캐스팅 할 수있는 정의를 변경는 타이프

답변

8

이에 대한 현재의 관행은 인터페이스에 추가보다는 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의 모든 용도를 제한하려고 노력할 것입니다. 이 명령은 해킹과, Github Page을 typings를 설치

:

5

는 예 :

var n = <any>navigator; 
    n.getUserMedia = n.getUserMedia || n.webkitGetUserMedia || n.mozGetUserMedia || n.msGetUserMedia; 
    return n.getUserMedia({video: true, audio:true}, onSuccess, onFail); 
5

이 이미 꽤 오래지만 사람들은 여전히 ​​대답을 찾고 여기에 올 수있는 바와 같이, 여기에 모든 확실히 입력 파일을 관리 할 typings를 사용하여 업데이트 된 답변입니다 명령 행 (NPM이 설치되어 있어야합니다) 및 다운로드 mediastream.d.ts 거기에서 :

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

은 다음 tsconfig.json 파일에 생성 된 typings 폴더에서 main.d.ts를 추가하거나 직접 추가 이 줄에 타이프 스크립트 파일을 쓰려면 :

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

이제 typescript는 navigator.getUserMedia()를 인식하고 올바르게 컴파일합니다. 그리고 멋진 부분은 다른 자바 스크립트 라이브러리 (libc)가있을 때마다 타이프를 인식 할 수있는 타이프 스크립트 (typcript)가 필요하며 입력을 몇 초 만에 추가 할 수 있다는 것입니다.

+0

입력을 사용해야했습니다. dt ~ webrtc/mediastream -SG – tredder

-1

유형 정의 가져 오기는 simplified with TypeScript 2.0입니다.

NPM과 dev에 의존성으로의 WebRTC 정의를 설치

$ npm install —save @types/webrtc 

일단 설치에서 getUserMedia와 함께 작동 .TS 파일의 상단에있는 참조 지시어를 사용

/// <reference types="webrtc" /> 

const getUserMedia = navigator.mediaDevices.getUserMedia || 
        navigator.getUserMedia || 
        navigator.webkitGetUserMedia || 
        navigator.mozGetUserMedia 

그해야 해!

+0

msGetUserMedia가 없습니다. 또한 navigator.mediaDevices.getUserMedia는 약속 기반입니다. 기존 및 더 이상 사용되지 않는 navigator.getUserMedia는 콜백 기반입니다. 더 이상 심이 필요하지 않으므로 navigator.mediaDevices.getUserMedia 만 사용하십시오. –

+0

@PhilippHancke 당신은 msGetUserMedia에 대해 정확합니다. 예제에서 삭제되었습니다. 주위에 거짓말을 한 정크 코드에서 남은 것.shim이 더 이상 필요하지 않다는 점에 동의합니다. 주로 shim이 더 이상 필요하지 않습니다. –