Typescript noImplicitAny和noImplicitReturns无法按预期工作

Kok*_*oko 5 typescript tsconfig visual-studio-code

我在我的Typescript tsconfig.json文件中添加了“ noImplicitAny”和“ noImplicitReturns”:

{
    "compilerOptions": {
        "target":"es5",
        "noImplicitAny": true,
        "noImplicitThis": true,
        "noImplicitReturns": true,
        "noUnusedLocals":true,
        "out": "dist/js/main.js"
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望以下代码会产生错误或至少警告:

private randomMove() {  // no return type but no warning :(
    let o = 3;          // no type for o but no warning :(
}
Run Code Online (Sandbox Code Playgroud)

“ noUnusedLocals”正在运行。

这是应该工作的方式吗,我是否缺少任何东西?当您不指定类型/返回类型时,是否可以使Visual Studio Code生成警告?

Nit*_*mer 8

您误解了这些标志的含义。

noImplicitAny

在隐式任何类型的表达式和声明上引发错误。

在您的示例中不是这种情况,因为编译器会推断ois 的类型为number,如果您这样做,则应该得到错误:

let o;
Run Code Online (Sandbox Code Playgroud)

noImplicitReturns

当函数中的所有代码路径均未返回值时,报告错误。

您的函数可能根本不需要返回,但是可以这样做:

function fn(a: number): boolean {
    if (a > 0) {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

应该导致编译错误。

不,如果函数不包含返回类型,则不会(我知道)会导致编译器出错。
那是因为:

  1. 编译器可以在大多数情况下自行推断返回类型
  2. 如果您的函数不返回怎么办?对于很多人来说,用每个函数注释都太冗长了: void

  • 谢谢,这是有道理的:)当我省略类型时,我仍然希望在代码中出现警告/潦草的行!这就是为什么我首先使用 Typescript :) (2认同)