Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular typescript-2.x的承诺给出错误:无法调用其类型缺少调用签名的表达式_Angular_Typescript2.0 - Fatal编程技术网

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

Angular typescript-2.x的承诺给出错误:无法调用其类型缺少调用签名的表达式,angular,typescript2.0,Angular,Typescript2.0,在将angular从2.x升级到4.x,并将typescript升级到2.x之后,开始出现以下错误,该错误在以前的版本中运行良好 无法调用其类型缺少调用签名的表达式。类型 “((OnCompleted?:(值: MediaStream)=>TResult1 | Prom…“没有兼容的呼叫签名 我的代码如下 getMediaStream(options:{video: boolean, audio: boolean}) { let self: Caller = this; retu

在将angular从2.x升级到4.x,并将typescript升级到2.x之后,开始出现以下错误,该错误在以前的版本中运行良好

无法调用其类型缺少调用签名的表达式。类型 “((OnCompleted?:(值: MediaStream)=>TResult1 | Prom…“没有兼容的呼叫签名

我的代码如下

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);
    });
  }

self.getUserMedia(选项)
键入
any
/
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');
      });
  }
getMediaStream(选项:{video:boolean,audio:boolean}){
让自我=这个;
return(self.getUserMedia(options))//代替promise“any”或其他任何要promise的超类也可以工作
。然后(流=>{
log('得到我们的媒体流:',流);
self.privateMedia=createObjectURL(流);
self.privateStream=流;
回流;
}).catch(()=>{
console.log('无法访问麦克风和摄像头');
});
}