为什么即使我将noImplicitAny指定为true,打字机也不会为没有类型的参数报告错误?

时间:2018-10-16 14:50:26

标签: typescript typechecking

这是我的tsconfig.json:

{
  "compilerOptions": {
    "strict": true,
    "target": "es6",
    "module": "commonjs",
    "noImplicitAny": true,
    "removeComments": true,
    "preserveConstEnums": true,
    "sourceMap": true
  },
  "files": [
    "server.ts"
  ]
}

您会看到noImplicitAny设置为true

这是我的server.ts

import * as express from 'express';

const app = express();

app.get('/:name', (req, res) => {
  const name = req.params.name;
  res.send(`Hello, ${name}`);
});

app.listen(3000, () => {
  console.log('listen on http://localhost:3000')
});

请注意(req, res)部分没有类型,但是打字稿没有给出任何错误。

我不确定哪里出了问题以及如何使打字稿引发错误。

这是一个有关此问题的小型完整演示项目:https://github.com/freewind-demos/typescript-express-demo

1 个答案:

答案 0 :(得分:2)

如果无法推断出参数或变量的类型并且必须隐式地将其键入,则

noImplicitAny会引发错误。

如果这种情况下req, res没有被键入。由于它们是回调的参数,因此可以根据回调类型确定其类型,并分别推断为RequestResponse