Typescript web音频API缺少定义



我有兴趣开始在我的一些项目中使用Typescript。现在我想使用Web音频API进行一些实时音频处理,使用麦克风作为输入流源。我在Visual Studio 2015内工作,因为我将使用ASP。5 .

我像这样定义我的音频上下文:var audioCtx: AudioContext;

它的工作方式是AudioContext定义存在于位于A:ProgramMicrosoft Visual Studio 14.0Common7IDECommonExtensionsMicrosoftTypeScript的lib.d.ts文件中

虽然当我后来试图使用audioCtx.createMediaStreamSource(stream)时,我在试图编译告诉我Property "createMediaStreamSource" does not exist on type 'AudioContext'的ts代码时出现了错误。

这个错误似乎是正确的,因为这是使用的lib.d.ts文件的内容:

interface AudioContext extends EventTarget {
    currentTime: number;
    destination: AudioDestinationNode;
    listener: AudioListener;
    sampleRate: number;
    createAnalyser(): AnalyserNode;
    createBiquadFilter(): BiquadFilterNode;
    createBuffer(numberOfChannels: number, length: number, sampleRate: number): AudioBuffer;
    createBufferSource(): AudioBufferSourceNode;
    createChannelMerger(numberOfInputs?: number): ChannelMergerNode;
    createChannelSplitter(numberOfOutputs?: number): ChannelSplitterNode;
    createConvolver(): ConvolverNode;
    createDelay(maxDelayTime?: number): DelayNode;
    createDynamicsCompressor(): DynamicsCompressorNode;
    createGain(): GainNode;
    createMediaElementSource(mediaElement: HTMLMediaElement): MediaElementAudioSourceNode;
    createOscillator(): OscillatorNode;
    createPanner(): PannerNode;
    createPeriodicWave(real: any, imag: any): PeriodicWave;
    createScriptProcessor(bufferSize?: number, numberOfInputChannels?: number, numberOfOutputChannels?: number): ScriptProcessorNode;
    createStereoPanner(): StereoPannerNode;
    createWaveShaper(): WaveShaperNode;
    decodeAudioData(audioData: ArrayBuffer, successCallback: DecodeSuccessCallback, errorCallback?: DecodeErrorCallback): void;
}

所以我想知道的是基本上如果有办法得到更多的"完整"定义的音频API?这样我至少可以使用大多数可用的函数和对象。

我不想自己添加定义,那么我宁愿使用标准的ES5。但我认为这将是相当奇怪的,如果没有更完整的TS定义的Web音频API,因为它已经存在了几年了(尽管它仍然改变一点点现在和然后)。

lib.d.ts定义倾向于遵循当前Microsoft对标准的实现,并随着Microsoft增加对新方面的支持而增长。有时这意味着它领先于其他浏览器,有时则落后。当Mozilla引入新想法时,他们当然会走在其他所有人的前面,实现和设备api是他们最喜欢的主题,因为它们与Firefox OS高度相关。

没有很多缺失,您可以使用下面的代码来插入缺失的部分。编译器会告诉你什么时候需要删除下面的任何一个,给你一个"重复标识符"。错误:

interface MediaStream {
    id: string;
    active: boolean;
}
interface MediaStreamAudioSourceNode extends AudioNode {
    
}
interface MediaStreamAudioDestinationNode extends AudioNode {
    stream: MediaStream;
}
interface AudioContext {
    state: string;
    close: () => void;
    createMediaStreamSource: () => MediaStreamAudioSourceNode;
    createMediaStreamDestination: () => any;
    resume: () => void;
    suspend: () => void;
}

MediaStream和MDN文档一样完整——要注意这一点,因为浏览器对该对象的成员支持似乎很少。

如果你使用类型,你可以像这样为web音频api安装类型定义:

typings install dt~webaudioapi/waa——global——save

最新更新