10

阅读webkitSpeechRecognition(Javascript中的语音识别)文档后,我试图在Angular 2中实现它。Angular2:网络语音API - 语音识别

但我这样做的时候:

const recognition = new webkitSpeechRecognition(); 

打字稿说此错误:

[ts] Cannot find name 'webkitSpeechRecognition'. any 

如果我尝试从窗口提取webkitSpeechRecognition

if ('webkitSpeechRecognition' in window) { 

    console.log("Enters inside the condition"); // => It's printing 

    const { webkitSpeechRecognition } = window; // => TypeScript Error 
    const recognition = new webkitSpeechRecognition(); 
} 

如果我评论最后两行console.log已打印,进入状态! webkitSpeechRecognition存在于窗口内!但如果不评论最后两行,TypeScript错误现在是这样的:

[ts] Type 'Window' has no property 'webkitSpeechRecognition' and no string index signature. 
const webkitSpeechRecognition: any 

如何在Angular 2中创建新的识别?有人试过吗?

回答

15

最后我解决了创建一个接口

export interface IWindow extends Window { 
    webkitSpeechRecognition: any; 
} 

和:

const {webkitSpeechRecognition} : IWindow = <IWindow>window; 
const recognition = new webkitSpeechRecognition(); 
+1

这对我帮助很大,谢谢。 –

+0

我得到一个导出界面的错误 - 界面中的窗口找不到Windo –

+0

你有工作演示吗?或者至少是界面和组件文件的例子? –

0

您可以通过

const speechRecognition = Window['webkitSpeechRecognition']; 

解决问题,或者您正在使用jQuery

const sr = $(window).get(0).webkitSpeechRecognition;