typescript - 不能将 new 与表达式 typescript 一起使用

标签 typescript

interface Window {
    AudioContext: AudioContext;
    webkitAudioContext: Function
}

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

最后一行给我这个错误,

Cannot use 'new' with an expression whose type lacks a call or construct signature

我该如何解决?

最佳答案

问题是编译器对待 contextClass变量作为 AudioContext实例而实际上它只是 AudioContext 的构造函数.

您可以简单地使用 any编译器会让你 new它:

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

另一种选择是引入 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 - 不能将 new 与表达式 typescript 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41017287/

相关文章:

typescript - 在动态渲染时更改 Angular 2 中子组件的顺序

angular - 导入幻灯片不适用于 Ionic 4?

javascript - 在catch中的return语句之后仍然执行代码吗?

typescript - 如何在 typescript 中创建对象时通过传递JSON来初始化构造函数参数

Angular 2 - 从响应中获取 cookie

javascript - 如何将 Promise<string> 分配给 String 类型

Angular 13 Prerender 错误找不到主包

typescript - gulpfile.ts 因任何导入语句而失败

reactjs - NextJS 中的 AmCharts - 语法错误 : Unexpected token 'export'

html - 将 Ionic 3 列表中的一项显示到另一页