提问者:小点点

typescript-2promise。x给出错误:无法调用其类型缺少调用签名的表达式


在从2. x升级到4. x并将types cript升级到2. x后,开始出现以下错误,该错误与以前的版本配合良好

无法调用其类型缺少调用签名的表达式。类型'((未完成?:(值:MediaStream)=

我的代码如下

getMediaStream(options:{video: boolean, audio: boolean}) {
    let self: Caller = this;
    return self.getUserMedia(options)
      .then(stream => {
        console.log('got our media stream:', stream);
        self.privateMedia = createObjectURL(stream);
        self.privateStream = stream;
        return stream;
      })
      .catch(() => {
        console.log('Could not get access to microphone & camera');
      });
  }

  public getUserMedia(constraints) {
    if (window.navigator.mediaDevices && window.navigator.mediaDevices.getUserMedia) {
      return window.navigator.mediaDevices.getUserMedia(constraints);
    }

    return new Promise((resolve, reject) => {
      const getMedia = window.navigator.getUserMedia;
      if (!getMedia) reject(new Error('Browser unsupported'));
      getMedia.call(navigator, constraints, resolve, reject);
    });
  }

共1个答案

匿名用户

打字self。getUserMedia(选项)到任何/promise解决了问题。

所以我使用了以下代码,它起了作用:

getMediaStream(options:{video: boolean, audio: boolean}) {
    let self = this;
    return (<Promise>self.getUserMedia(options))// in place of promise 'any' or other any superclass to promise will work as well 
      .then(stream => {
        console.log('got our media stream:', stream);
        self.privateMedia = createObjectURL(stream);
        self.privateStream = stream;
        return stream;
      }).catch(() => {
        console.log('Could not get access to microphone & camera');
      });
  }