问题是编译器将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();