Angular 创建库:无法使用第 3 方包类型

问题描述 投票:0回答:2

我正在开发自己的语音识别库。我想使用第 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
安装到我的库后修改的地方。

我还需要在其他地方导出或导入类型吗?

angular typescript npm package.json
2个回答
1
投票

您看到的错误消息表明即使您已安装,也无法找到 SpeechRecognition 和 webkitSpeechRecognition 的类型。

尝试更改 tsconfig.ts:

{"compilerOptions": {"types": []}}

它允许 TypeScript 发现并包含已安装包中的类型。

并在 voice-recognition.service.ts 中添加适当的导入

import { SpeechRecognition } from 'dom-speech-recognition';

0
投票

在写解决方案之前你尝试过吗?

© www.soinside.com 2019 - 2024. All rights reserved.