typescript 如何阻止从“any”到更强类型的隐式强制转换

g6baxovj  于 2023-01-21  发布在  TypeScript
关注(0)|答案(1)|浏览(156)
    • bounty将在6天后过期**。回答此问题可获得+50声望奖励。brillout希望引起更多人关注此问题。

TypeScript允许从any隐式强制转换为更强的类型。考虑到反序列化的JSON属于any类型,此行为允许许多类型错误并中断键入。
我可以使用哪些编译器或linting选项来阻止从any到更强类型的隐式转换?

    • 复制**应标记此操作以允许从any强制转换为更强的类型。
const o = JSON.parse("");
const s: string = o.twinlakes;
m1m5dgzv

m1m5dgzv1#

如果还没有,试着启用TypeScript --noImplicitAny编译器标志,以防止声明意外忘记标记无法推断的类型,这将阻止let data;function takesData(data) { /* ... */ }等代码允许其data变量“隐式”为any类型。
此外,还有一些TSLint规则可以帮助您:

  • no-any:不允许将any用作类型声明。使用此选项可阻止声明中包含any,例如let data: any = {/*...*/}
  • no-unsafe-any:不允许以不安全的方式意外使用any。这与no-any的不同之处在于,您可能仍在使用any类型而不知道它:例如let data = JSON.parse("{}");

相关问题