interface Window {
    AudioContext: AudioContext;
    webkitAudioContext: Function
}

let contextClass = window.AudioContext || window.webkitAudioContext;
let context: AudioContext = new contextClass();

最后一行给了我这个错误,

不能将"new"与类型缺少调用或

我该如何解决这个问题?

推荐答案

问题是编译器将contextClass变量视为AudioContext中的instance,而实际上它只是AudioContext的构造函数.

您只需使用any,编译器将允许您使用new:

let contextClass : any = window.AudioContext || window.webkitAudioContext;
let context: AudioContext = new contextClass();

另一个 Select 是引入一个Constructable<T>接口,可以让您对这些类型进行new次升级:

interface Constructable<T> {
    new(...args: any) : T;
}

interface Window
{
    AudioContext: Constructable<AudioContext>;
    webkitAudioContext: Constructable<AudioContext>
}

let contextClass = window.AudioContext || window.webkitAudioContext;
let context: AudioContext = new contextClass();

Typescript相关问答推荐

无法访问Nextjs中的本地存储

如果一个变量不是never类型,我如何创建编译器错误?

单击并移除for循环中的一项也会影响另一项

如何以Angular 形式显示验证错误消息

打字类型保护递归判断

在分配给类型的只读变量中维护const的类型

在对象中将缺省值设置为空值

TypeScrip错误:为循环中的对象属性赋值

如何正确调用创建的类型?

在TypeScript中扩展重载方法时出现问题

与toast.error一起react 中的Async TUNK错误消息

如何在Angular 服务中制作同步方法?

为什么上下文类型在`fn|curred(Fn)`的联合中不起作用?

作为函数参数的联合类型的键

Cypress-验证别名的存在或将别名中的文本与';if';语句中的字符串进行比较

有没有更干净的方法来更新**key of T**的值?

如何以类型安全的方式指定键的常量列表,并从该列表派生所挑选的接口?

更漂亮的格式数组<;T>;到T[]

如何填写Partial的一些属性并让类型系统知道它?

从泛型对象数组构造映射类型