Angular typescript-2.x的承诺给出错误:无法调用其类型缺少调用签名的表达式
在将angular从2.x升级到4.x,并将typescript升级到2.x之后,开始出现以下错误,该错误在以前的版本中运行良好 无法调用其类型缺少调用签名的表达式。类型 “((OnCompleted?:(值: MediaStream)=>TResult1 | Prom…“没有兼容的呼叫签名 我的代码如下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
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('无法访问麦克风和摄像头');
});
}