Typescript 网络音频 API 缺少定义
Typescript web audio API missing definitions
我有兴趣开始在我的一些项目中使用 Typescript。现在我想使用 Web Audio API 使用麦克风作为输入流源进行一些实时音频处理。我在 Visual Studio 2015 工作,因为我将使用 ASP.NET 5.
我正在这样定义我的音频上下文:
var audioCtx: AudioContext;
它的工作原理是 AudioContext 定义存在于位于 A:\Program\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TypeScript
的 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 获得更多 "complete" 定义?这样我至少可以使用大部分可用的函数和对象。
我不想自己添加定义,所以我宁愿使用标准的 ES5。但我认为,如果 Web Audio API 没有更完整的 TS 定义,那将是相当奇怪的,因为它已经存在了几年(尽管它仍然不时发生一些变化)。
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 文档一样完整 - 请注意这一点,因为似乎对此对象的成员的浏览器支持最少。
如果您使用 typings,您可以像这样安装网络音频 api 的类型定义:
typings install dt~webaudioapi/waa --global --save
我有兴趣开始在我的一些项目中使用 Typescript。现在我想使用 Web Audio API 使用麦克风作为输入流源进行一些实时音频处理。我在 Visual Studio 2015 工作,因为我将使用 ASP.NET 5.
我正在这样定义我的音频上下文:
var audioCtx: AudioContext;
它的工作原理是 AudioContext 定义存在于位于 A:\Program\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TypeScript
不过当我稍后尝试使用 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 获得更多 "complete" 定义?这样我至少可以使用大部分可用的函数和对象。
我不想自己添加定义,所以我宁愿使用标准的 ES5。但我认为,如果 Web Audio API 没有更完整的 TS 定义,那将是相当奇怪的,因为它已经存在了几年(尽管它仍然不时发生一些变化)。
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 文档一样完整 - 请注意这一点,因为似乎对此对象的成员的浏览器支持最少。
如果您使用 typings,您可以像这样安装网络音频 api 的类型定义:
typings install dt~webaudioapi/waa --global --save