Почему машинопись не сообщает об ошибке для моего параметра без типов, даже если я указал noImplicitAny в true? - PullRequest
0 голосов
/ 16 октября 2018

Это мой 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 голосов
/ 16 октября 2018

noImplicitAny выдает ошибку, если тип параметра или переменной не может быть выведен и должен быть неявно напечатан как любой.

Если этот регистр req, res не напечатан как любой.Так как они являются параметрами для обратного вызова, их тип может быть определен на основе типа обратного вызова и выводится на Request и Response соответственно.

...