javascript - 如何在 index.d.ts 中导入其他模块
问题描述
背景
我正在用打字稿制作反应天真的应用程序。我正在使用react-native-voice 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
....
}
注意 locale 参数。react-native-voice 库的 start 函数接受 locale 属性。那只是一个字符串。但我想让它像下面那样枚举。
enum Locale {
en_US = 'en-US',
ko_KR = 'ko-KR',
ja_JP = 'ja-JP',
zh_CN = 'zh-CN',
zh_HK = 'zh_HK',
zh = 'zh'
}
我把它放在declare module "react-native-voice" { enum Locale.... }
同一个地方。
问题
当我将 react-native-voice 与自定义 index.d.ts 文件一起使用时,出现运行时错误。
TypeError: Cannot read property 'ko_KR' of undefined
是的,react-native-voice 的 javascript 源代码中没有 Locale 变量。我理解这个错误。
所以,我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)
这是什么意思?我应该怎么做才能enum Locale
从文件constants.ts
中导入index.d.ts
?
解决方案
推荐阅读
- symfony - Symfony 3,缓存:清除错误连接超时
- python - python中的奇怪赋值
- azure - Azure Active Directory - 缺少 Dynamics CRM Online (Microsoft.CRM) 所需的权限
- asp.net-core - 如何从控制器(而不是 StartUp.cs)为 IdentityOptions 设置值?
- python-2.7 - 通过 Python 保存 ODB 文件:尝试截断只读表时出错
- driver - 在 V4L2 中选择多个通道
- python - Matplotlib 切断放置在轴外的图例,忽略 savefig 中的 bbox_extra_artists 参数
- javascript - Lodash keyBy 与数组相同的属性
- python - 无法让我的程序生成随机卡片(1-13)
- c# - 在 DataTemplate UWP 中将点击器绑定到 VM