Typescript和WebRTC,类型'RTCPeerConnection'

时间:2018-09-17 19:02:43

标签: typescript webrtc

我正在尝试WebRTC和打字稿,因为打字稿很棒,而webrtc甚至很棒...我正在使用VS Code在Angular 6的背景下这样做。

这似乎不是天堂里的一场比赛(可能是由于我不了解任何一个的一部分)。

我很难找到任何使用webrtc的打字稿的人的例子,但是当我开始尝试翻译一个简单的javascript例子时,我注意到这些方法和属性似乎至少在Visual Studio Code中是可以识别的。但是我没有走远。

在下面您可以看到我试图将一个简单的示例转换为打字稿。

createConnection ()
{       
    // window.localConnection = localConnection = new RTCPeerConnection(servers);
    this.localConnection = new RTCPeerConnection();
    console.log(this.sendChannel);

    // sendChannel = localConnection.createDataChannel('sendDataChannel');
    var sendChannel = this.localConnection.createDataChannel('sendDataChannel');
    console.log(this.sendChannel);

    // localConnection.onicecandidate = e => {
    //   onIceCandidate(localConnection, e);
    // };
    // sendChannel.onopen = onSendChannelStateChange;
    // sendChannel.onclose = onSendChannelStateChange;

    // window.remoteConnection = remoteConnection = new RTCPeerConnection(servers);
    // console.log('Created remote peer connection object remoteConnection');

    // remoteConnection.onicecandidate = e => {
    //   onIceCandidate(remoteConnection, e);
    // };
    // remoteConnection.ondatachannel = receiveChannelCallback;

    // localConnection.createOffer().then(
    //   gotDescription1,
    //   onCreateSessionDescriptionError
    // );
    // startButton.disabled = true;
    // closeButton.disabled = false;
  }

在sendChannel的定义上,我得到以下错误:

  

src / app / app.component.ts(48,44):错误TS2339:类型'RTCPeerConnection'不存在属性'createDataChannel'。

第一个日志的控制台日志为:

  

RTCPeerConnection {localDescription:null,currentLocalDescription:null,pendingLocalDescription:null,remoteDescription:null,currentRemoteDescription:null,pendingRemoteDescription:null,signalingState:“稳定”,canTrickleIceCandidates:null,iceGatheringState:“ new”,iceConnectionState:“ new” }

,第二次记录为null。

赞赏有关我为什么收到此错误以及如何解决该错误的任何提示或提示。

更新:添加了可解决问题的git repositoryng se。

git clone https://github.com/wokawaka/typescriptwebrtctest
npm install
ng serve --open

1 个答案:

答案 0 :(得分:3)

看起来TypeScript 3.0.0和更高版本的声明为createDataChannel,而旧版本则没有。尝试升级TypeScript。还有@types/webrtc软件包,在将其放入TypeScript标准库之前,可能会有更新的声明。