据我所知,当你在Typescript中声明一个变量时,你可以选择是否为变量指定一个类型。如果没有指定类型,则默认为" any"使用类型。有没有办法强制所有变量都声明一个类型,即使它可能是"任何"。在中,我想要在未指定类型时出现编译器错误。这样程序员就会被迫给所有类型提供一个类型,并防止变量意外遗留的情况为"任何"。
答案 0 :(得分:19)
声明的变量在TypeScript中必然没有类型是不正确的。在可能的情况下,TypeScript编译器将根据声明的右侧推断类型。
例如:
var x = 150;
x
将是一个数字,因为RHS是一个数字。
您可以使用命令行编译选项来捕获使用--noImplicitAny
无法推断出类型的声明:
使用隐含的'any'类型警告表达式和声明。
此选项会捕获例如声明变量d
但尚未立即赋值的情况。
var d;
会产生错误:
错误TS7006:'test'的参数'd'隐式具有'any'类型。
编译器开关还捕获没有指定类型的参数,并且在注释中指出@basarat,它还捕获返回类型和类/接口成员。
this blog post中还有更多信息。请注意,还有一个等效的MSBuild /项目设置:<TypeScriptNoImplicitAny>
。
答案 1 :(得分:4)
您也可以设置tsconfig.json
:
{
"compilerOptions": {
"noImplicitReturns": true,
"noImplicitAny": true
}
}