TypeScript允许从any隐式强制转换为更强的类型。考虑到反序列化的JSON属于any类型,此行为允许许多类型错误并中断键入。我可以使用哪些编译器或linting选项来阻止从any到更强类型的隐式转换?
any
const o = JSON.parse(""); const s: string = o.twinlakes;
m1m5dgzv1#
如果还没有,试着启用TypeScript --noImplicitAny编译器标志,以防止声明意外忘记标记无法推断的类型,这将阻止let data;或function takesData(data) { /* ... */ }等代码允许其data变量“隐式”为any类型。此外,还有一些TSLint规则可以帮助您:
--noImplicitAny
let data;
function takesData(data) { /* ... */ }
data
no-any
let data: any = {/*...*/}
no-unsafe-any
let data = JSON.parse("{}");
1条答案
按热度按时间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("{}");
。