我正在开发自己的语音识别库。我想使用第 3 方软件包类型
@types/dom-speech-recognition
。当我尝试在服务中使用这些类型时,编译器抛出无法找到这些第三方类型的错误:
Error: ../angular-voice-recognition/src/lib/voice-recognition.service.ts:9:23 - error TS2304: Cannot find name 'SpeechRecognition'.
9 private speechAPI!: SpeechRecognition;
~~~~~~~~~~~~~~~~~
Error: ../angular-voice-recognition/src/lib/voice-recognition.service.ts:40:28 - error TS2304: Cannot find name 'webkitSpeechRecognition'.
40 this.speechAPI = new webkitSpeechRecognition();
~~~~~~~~~~~~~~~~~~~~~~~
我已经安装了这些类型
npm install @types/dom-speech-recognition --save
tsconfig.lib.json:
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "../../out-tsc/lib",
"declaration": true,
"declarationMap": true,
"inlineSources": true,
"types": [
"dom-speech-recognition"
]
},
"exclude": [
"src/test.ts",
"**/*.spec.ts"
]
}
语音识别.service.ts:
import { Injectable } from '@angular/core';
import {VoiceParams} from "./model/voice-params.model";
import {Observable} from "rxjs";
import {VoiceResult} from "./model/voice-result";
import {VoiceEvent} from "./model/voice-event";
@Injectable()
export class VoiceRecognitionService {
private speechAPI!: SpeechRecognition;
...
private initialize(params: VoiceParams) {
if ('webkitSpeechRecognition' in window) {
...
}
}
}
这些都是我将
@types/dom-speech-recognition
安装到我的库后修改的地方。
我还需要在其他地方导出或导入类型吗?
您看到的错误消息表明即使您已安装,也无法找到 SpeechRecognition 和 webkitSpeechRecognition 的类型。
尝试更改 tsconfig.ts:
{"compilerOptions": {"types": []}}
它允许 TypeScript 发现并包含已安装包中的类型。
并在 voice-recognition.service.ts 中添加适当的导入
import { SpeechRecognition } from 'dom-speech-recognition';
在写解决方案之前你尝试过吗?