我在我的Typescript tsconfig.json文件中添加了“ noImplicitAny”和“ noImplicitReturns”:
{ "compilerOptions": { "target":"es5", "noImplicitAny": true, "noImplicitThis": true, "noImplicitReturns": true, "noUnusedLocals":true, "out": "dist/js/main.js" } }
我希望以下代码会产生错误或至少警告:
private randomMove() { // no return type but no warning :( let o = 3; // no type for o but no warning :( }
“ noUnusedLocals”正在运行。
这是应该工作的方式吗,我是否缺少任何东西?当您不指定类型/返回类型时,是否可以使Visual Studio Code生成警告?
您误解了这些标志的含义。
noImplicitAny:
在隐式任何类型的表达式和声明上引发错误。
在您的示例中不是这种情况,因为编译器会推断o
is 的类型为number
,如果您这样做,则应该得到错误:
let o;
noImplicitReturns:
当函数中的所有代码路径均未返回值时,报告错误。
您的函数可能根本不需要返回,但是可以这样做:
function fn(a: number): boolean { if (a > 0) { return false; } }
应该导致编译错误。
不,如果函数不包含返回类型,则不会(我知道)会导致编译器出错。
那是因为:
编译器可以在大多数情况下自行推断返回类型
如果您的函数不返回怎么办?对于很多人来说,用每个函数注释都太冗长了: void