Safari上的AudioContext问题

时间:2018-02-13 00:53:12

标签: typescript angular5 audiocontext webkitaudiocontext

我正在尝试在我的打字稿文件中使用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);
    });

4 个答案:

答案 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)();