Recientemente tuve algunas variables globales a las que hacía referencia desde un archivo TypeScript que TypeScript marcó con el siguiente error:
Property 'msSpeechRecognition' does not exist on type 'Window & typeof globalThis'. Así que creé y agregué el siguiente código en mi env.d.ts (generado y referenciado en tsconfig.json por create-vue ):
declare const msSpeechRecognition: undefined | SpeechRecognitionStatic;Esto no solucionó el problema. Sin embargo, cuando cambié el código a lo siguiente:
declare var msSpeechRecognition: undefined | SpeechRecognitionStatic; El error en la referencia a msSpeechRecognition desapareció. Entiendo las diferencias entre const y var en JavaScript, pero ¿cuáles son las diferencias cuando se usan en declaraciones de tipos?
No pude reproducir este mismo problema al reemplazar SpeechRecognitionStatic con string , así que sé que es algo relacionado con el tipo SpeechRecognitionStatic . Así es como se veía (traído de @types/webspeechapi ):
interface SpeechRecognitionStatic { prototype: SpeechRecognition; new (): SpeechRecognition; }El error indica que se accede a msSpeechRecognition desde el objeto de window como window.msSpeechRecognition . Solo puede agregar algo a globalThis declarándolo con var . Si desea usar const en su lugar, deberá reemplazar las referencias a window.msSpeechRecognition con solo msSpeechRecognition .