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;