我正在尝试在我的打字稿文件中使用AudioContext来获取Angular 5应用程序。它在Chrome上运行良好,不适用于Safari。我通过谷歌搜索看到的所有内容都说使用window.webkitAudioContext
但是当打字稿编译器运行时它会立即爆炸,说它在类型Window上不存在。
let context = new AudioContext();
let source = context.createBufferSource();
context
.decodeAudioData(event.body)
.then(x => {
source.buffer = x;
source.connect(context.destination);
source.start(0);
});
答案 0 :(得分:2)
您应该扩展Window
接口,然后扩充窗口对象。
假设您正在使用 angular-cli ,请将以下内容添加到typings.d.ts
文件中:
declare interface Window {
AudioContext: AudioContext;
}
然后在polyfills.ts
文件中,您可以设置AudioContext
属性:
window.AudioContext = window.AudioContext || window.webkitAudioContext;
答案 1 :(得分:0)
您可以将window
投射到any
:
(window as any).AudioContext = (window as any).AudioContext || (window as any).webkitAudioContext;
let context = new AudioContext();
答案 2 :(得分:0)
我选择了这种单线:
const audioContext: AudioContext = new (window["AudioContext"] || window["webkitAudioContext"])();
答案 3 :(得分:0)
您必须在全局名称空间的Window
接口中添加所需的属性。
declare global {
interface Window {
AudioContext: typeof AudioContext;
webkitAudioContext: typeof AudioContext;
}
}
const context = new (window.AudioContext || window.webkitAudioContext)();