我记得在文档中读到,所有类型都可以分配给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
特别是选择了类型检查的。从the documentation:
Any
In some situations, not all type information is available or its declaration would take an inappropriate amount of effort. These may occur for values from code that has been written without TypeScript or a 3rd party library. In these cases, we might want to opt-out of type checking. To do so, we label these values with the
any
type ...
(我的重点)
将此与
unknown
type(我认为是相对较新的)进行对比,您在代码中标记的行确实是一个错误:const xUnknown: unknown = {}
takesAString(xUnknown); // <--- This is an error
Playground link
关于typescript - Typescript是否允许将 “any”分配给其他所有类型?如何处理渔获(错误: any)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64159526/