Typescript: TS7006: 参数'xxx' 隐式具有 'any' 类型
Typescript: TS7006: 参数'xxx' 隐式具有 'any' 类型
在测试我的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;
admin 更改状态以发布 2023年5月23日
您正在使用--noImplicitAny
选项,而TypeScript不了解Users
对象的类型。在这种情况下,您需要明确定义user
类型。
更改这行代码:
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
或者定义您的Users
对象的类型:
//... 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 =require('../data'); //...