Я сталкиваюсь с двумя случаями, связанными с этой проблемой, когда я пытаюсь провести рефакторинг проекта es6 в машинописном тексте, один из которых имеет значение Object.keys()
, а другой - около import * as xxx
.
Случай 1:
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')
k
в map
гарантированно является ключом SUPPORTED_VALUES
, но компилятор машинописного текста не знает об этом.Как это исправить, не отключая 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
, но компилятор машинописного текста не может справиться с этим.