首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getDisplayMedia未在TypeScript 3.8中指定

getDisplayMedia未在TypeScript 3.8中指定
EN

Stack Overflow用户
提问于 2020-07-18 08:33:41
回答 2查看 1.8K关注 0票数 1

我正在Visual中编写一个.Net核心/角8应用程序。

在应用程序的角(ClientApp)部分中,我的node_modules包含TypeScript 3.5.3,它在lib.dom.d.ts中定义如下

代码语言:javascript
复制
interface NavigatorUserMedia {
    readonly mediaDevices: MediaDevices;
    getDisplayMedia(constraints: MediaStreamConstraints): Promise<MediaStream>;
    getUserMedia(constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback, errorCallback: NavigatorUserMediaErrorCallback): void;
}

因此,我应该能够调用navigator.getDisplayMedia(...),然而,当我尝试这样做时,我在它下面得到一条红线,表示getDisplayMedia不是导航器的函数。

因此,我点击了navigator的"Go To Definition“,它带我到了C:\Program Files (x86)\Microsoft SDKs\TypeScript中定义的TypeScript,它显然是TypeScript 3.8.3。这似乎也是在Properties > TypeScript Build下定义的"TypeScript版本“。在lib.dom.d.ts文件中,似乎绝对没有任何getDisplayMedia函数。

我试图使用NuGet下载TypeScript 3.5.3,它正确地更改了Properties > TypeScript Build下的TypeScript版本,并删除了允许正确构建项目的红线。但是,当试图调用函数时,一个错误输出到浏览器控制台,说明getDisplayMedia不是导航器的函数.

见鬼这是怎么回事?

注意:我知道getDisplayMedia应该从MediaDevices调用。但是,在lib.dom.d.ts中,对于TypeScript 3.5.3和3.8.3,MediaDevices不包含getDisplayMedia。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-18 08:50:34

不过,这似乎是TypeScript的一个活跃问题:

https://github.com/microsoft/TypeScript/issues/33232

当前的解决方法是手动定义mediaDevices:

代码语言:javascript
复制
const mediaDevices = navigator.mediaDevices as any;
const stream = await mediaDevices.getDisplayMedia();
票数 1
EN

Stack Overflow用户

发布于 2021-11-04 19:44:52

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62966395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档