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/