首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >类型记录: TS7006:参数'xxx‘隐式有’任意‘类型

类型记录: TS7006:参数'xxx‘隐式有’任意‘类型
EN

Stack Overflow用户
提问于 2017-03-28 08:20:02
回答 13查看 665.5K关注 0票数 376

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

data.json

代码语言:javascript
代码运行次数:0
运行
复制
[
  {
    "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错误

代码语言:javascript
代码运行次数:0
运行
复制
ERROR in ...../UserRouter.ts
(30,27): error TS7006: Parameter 'user' implicitly has an 'any' type.

UserRouter.ts

代码语言:javascript
代码运行次数:0
运行
复制
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;
EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2017-03-28 13:24:45

您使用的是--noImplicitAny,而TypeScript不知道Users对象的类型。在这种情况下,您需要显式地定义user类型。

更改这一行:

代码语言:javascript
代码运行次数:0
运行
复制
let user = Users.find(user => user.id === query);

对此:

代码语言:javascript
代码运行次数:0
运行
复制
let user = Users.find((user: any) => user.id === query); 
// use "any" or some other interface to type this argument

或者定义Users对象的类型:

代码语言:javascript
代码运行次数:0
运行
复制
//...
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');
//...
票数 508
EN

Stack Overflow用户

发布于 2018-10-08 21:15:20

tsconfig.json文件中,在compilerOptions下设置参数"noImplicitAny": false以消除此错误。

票数 173
EN

Stack Overflow用户

发布于 2021-06-09 09:51:00

在您的compilerOptions部分的tsconfig.json文件中进行这些更改--这对我来说是有效的

代码语言:javascript
代码运行次数:0
运行
复制
"noImplicitAny": false

不需要设置

代码语言:javascript
代码运行次数:0
运行
复制
"strict":false

请稍等1到2分钟,一些pcs机的编译速度很慢

票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43064221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档