【发布时间】:2020-10-01 16:26:21
【问题描述】:
我记得在文档中读到所有类型都可以分配给any。但我不记得读过any 可以分配给其他所有类型。
function takesAString(x: string) {
console.log(x);
}
const xAny: any = {}
takesAString(xAny); // <--- WHY IS THIS NOT AN ERROR ?
takesAString(true);
takesAString(111);
我在try-catch 循环中遇到了这个问题:
catch(err) { // TYPESCRIPT EVALUATES err AS any
dispatch(SOME_ACTION(err)); // THIS EXPECTS err TO BE OF TYPE STRING
}
Typescript 将 catch 块 err 参数隐式评估为 any,并没有提醒我 SOME_ACTION(err) 可能没有按预期获得 string。
这是正常行为吗?如何处理?
【问题讨论】:
-
是的,
any可以分配给任何东西。如果这不是您想要的,这就是引入unknown的原因,参见例如stackoverflow.com/questions/51439843/unknown-vs-any.
标签: typescript error-handling try-catch typescript-typings