Javascript 如何在index.d.ts中导入其他模块 背景

Javascript 如何在index.d.ts中导入其他模块 背景,javascript,typescript,react-native,Javascript,Typescript,React Native,我正在用typescript制作react naive应用程序。我正在使用javascript库。它没有类型声明文件。所以我在myproject/src/@types/react native voice/index.d.ts中创建了它,如下所示 declare module "react-native-voice" { type Option = { EXTRA_LANGUAGE_MODEL: string, ... } type StartEvent = {

我正在用typescript制作react naive应用程序。我正在使用javascript库。它没有类型声明文件。所以我在
myproject/src/@types/react native voice/index.d.ts
中创建了它,如下所示

declare module "react-native-voice" {
  type Option = {
    EXTRA_LANGUAGE_MODEL: string,
    ...
  }
  type StartEvent = {
    error: boolean
  }
  ....
  function start(locale: Locale, options?: Option): Promise<{}>
  function stop(): Promise<{}>
  function onSpeechPartialResults(e: PartialResults): void
  ....
}
enum Locale {
  en_US = 'en-US',
  ko_KR = 'ko-KR',
  ja_JP = 'ja-JP',
  zh_CN = 'zh-CN',
  zh_HK = 'zh_HK',
  zh = 'zh'
}
我把它放在
声明模块“react native voice”{enum Locale….}
的同一个地方

问题 当我在自定义index.d.ts文件中使用react native voice时,出现运行时错误

TypeError: Cannot read property 'ko_KR' of undefined
是的,react native voice的javascript源代码中没有区域设置变量。我理解这个错误

因此,我将
enum Locale
移动到我的
constants.ts
文件中,并尝试从
index.d.ts
导入它

// index.d.ts
import {Locale} from '../../constants';

declare module "react-native-voice" { ... }
但是,VSCode突然显示错误

Invalid module name in augmentation. Module 'react-native-voice' resolves to an untyped module at 'my-project-path/node_modules/react-native-voice/index.js', which cannot be augmented.ts(2665)

这是什么意思?我应该怎么做才能从
index.d.ts
文件中的
constants.ts
导入
enum Locale

enum
生成代码,这样它们就不能是环境代码了。您可以使用字符串文字来完成相同的任务<代码>键入Local='en-US'|'ko-KR'|……@Tyler Sebastian谢谢。但是没有办法在
index.d.ts
文件中导入另一个模块吗
index.d.ts
文件应该是独立的?@byeonginyon您可以利用声明合并而不是导入其他模块声明合并建议很好,但在这种情况下,您最好完全不使用枚举,而是使用字符串文本类型的并集来键入参数。