【发布时间】:2019-05-05 05:33:40
【问题描述】:
我在打字稿中尝试重构一个es6项目时遇到了两个关于这个问题的案例,一个是关于Object.keys(),另一个是关于import * as xxx。
案例一:
const SUPPORTED_VALUES = {
min_s: 'Mininum similarity',
max_rc: 'Maximum result count'
}
const UNSUPPORTED_MSG =
'Configurable values:\n' +
Object.keys(SUPPORTED_VALUES)
.map(k => `${k}: ${SUPPORTED_VALUES[k]}`)
.join('\n')
map 中的 k 保证是 SUPPORTED_VALUES 中的键,但 typescript 编译器不知道这一点。我应该如何在不禁用 noImplicitAny 的情况下解决此问题?
案例 2:
我有一个名为cmd.ts的文件:
export async function cmd1(args){}
export async function cmd2(args){}
使用的是另一个文件,像这样:
import * as cmdHandlers from './cmd'
// some code...
if (cmd in cmdHandlers) {
await cmdHandlers[cmd](bot, msg, ...args)
}
这也保证cmd存在于cmdHandlers中,但是typescript编译器无法处理。
【问题讨论】:
标签: javascript typescript ecmascript-6