在测试我的UserRouter时,我使用了一个json文件

data.json

[
  {
    "id": 1,
    "name": "Luke Cage",
    "aliases": ["Carl Lucas", "Power Man", "Mr. Bulletproof", "Hero for Hire"],
    "occupation": "bartender",
    "gender": "male",
    "height": {
      "ft": 6,
      "in": 3
    },
    "hair": "bald",
    "eyes": "brown",
    "powers": [
      "strength",
      "durability",
      "healing"
    ]
  },
  {
  ...
  }
]

构建我的应用程序,我得到以下TS错误

ERROR in ...../UserRouter.ts
(30,27): error TS7006: Parameter 'user' implicitly has an 'any' type.

UserRouter.ts

import {Router, Request, Response, NextFunction} from 'express';
const Users = require('../data');

export class UserRouter {
  router: Router;

  constructor() {
  ...
  }

  /**
   * GET one User by id
   */
  public getOne(req: Request, res: Response, _next: NextFunction) {
    let query = parseInt(req.params.id);
 /*[30]->*/let user = Users.find(user => user.id === query);
    if (user) {
      res.status(200)
        .send({
          message: 'Success',
          status: res.status,
          user
        });
    }
    else {
      res.status(404)
        .send({
          message: 'No User found with the given id.',
          status: res.status
        });
    }
  }


}

const userRouter = new UserRouter().router;
export default userRouter;

当前回答

在tsconfig的compilerOptions部分进行这些更改。Json文件,这为我工作

"noImplicitAny": false

无需设置

"strict":false

有些电脑编译很慢,请等1 - 2分钟

其他回答

你正在使用——noImplicitAny, TypeScript不知道Users对象的类型。在这种情况下,您需要显式地定义用户类型。

更改这一行:

let user = Users.find(user => user.id === query);

:

let user = Users.find((user: any) => user.id === query); 
// use "any" or some other interface to type this argument

或者定义用户对象的类型:

//...
interface User {
    id: number;
    name: string;
    aliases: string[];
    occupation: string;
    gender: string;
    height: {ft: number; in: number;}
    hair: string;
    eyes: string;
    powers: string[]
}
//...
const Users = <User[]>require('../data');
//...

尝试声明用户的类型。 如

let user:Object = {sample object}

遵循这个方法。 作为

let var:type = val

参数'post'在Angularcli中隐含地有一个'any'类型 也许在项目创建时,你已经在应用中启用了Angular的严格模式? Max建议禁用严格模式 如果您已经启用了严格模式,请通过在tsconfig中设置strict属性来禁用它。Json为false

我遇到了这个错误,并发现这是因为在tsconfig中“strict”参数被设置为true。json文件。设置为“false”(显然)。在我的例子中,我从cmd提示符中生成了tsconfig文件,只是错过了“strict”参数,该参数位于文件的更下方。

转到tsconfig。Json和注释行//strict:true这对我有用