打字稿:TS7006:参数“xxx"隐式具有“任何"类型 [英] Typescript: TS7006: Parameter 'xxx' implicitly has an 'any' type
本文介绍了打字稿:TS7006:参数“xxx"隐式具有“任何"类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在测试我的 UserRouter 时,我使用了一个 json 文件
data.json
<预><代码>[{身份证":1,"name": "卢克·凯奇",别名":[卡尔·卢卡斯"、强力人"、防弹先生"、雇佣英雄"]、"职业": "酒保","性别": "男",高度": {英尺":6,在":3},头发":秃头",棕色的眼睛",权力":[力量",耐用性",康复"]},{...}]构建我的应用程序时,我收到以下 TS 错误
错误在...../UserRouter.ts(30,27): 错误 TS7006: 参数 'user' 隐式具有 'any' 类型.
UserRouter.ts
import {Router, Request, Response, NextFunction} from 'express';const Users = require('../data');导出类 UserRouter {路由器:路由器;构造函数(){...}/*** 通过 id 获取一个用户*/public getOne(req: Request, res: Response, _next: NextFunction) {让查询 = parseInt(req.params.id);/*[30]->*/let user = Users.find(user => user.id === query);如果(用户){资源状态(200).发送({消息:'成功',状态:res.status,用户});}别的 {资源状态(404).发送({message: '没有找到具有指定 ID 的用户.',状态:res.status});}}}const userRouter = new UserRouter().router;导出默认用户路由器;
解决方案
您正在使用 --noImplicitAny
而 TypeScript 不知道 Users
的类型目的.在这种情况下,您需要明确定义 user
类型.
更改这一行:
let user = Users.find(user => user.id === query);
为此:
let user = Users.find((user: any) => user.id === query);//使用任何"或其他一些接口来输入这个参数
或者定义你的 Users
对象的类型:
//...界面用户{身份证号码;名称:字符串;别名:字符串[];职业:字符串;性别:字符串;高度:{英尺:数字;在:数字;}头发:绳子;眼睛:绳子;权力:字符串[]}//...const Users = <User[]>require('../data');//...
In testing my UserRouter, I am using a json file
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"
]
},
{
...
}
]
Building my app, I get the following TS error
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;
解决方案
You are using the --noImplicitAny
and TypeScript doesn't know about the type of the Users
object. In this case, you need to explicitly define the user
type.
Change this line:
let user = Users.find(user => user.id === query);
to this:
let user = Users.find((user: any) => user.id === query);
// use "any" or some other interface to type this argument
Or define the type of your Users
object:
//...
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');
//...
这篇关于打字稿:TS7006:参数“xxx"隐式具有“任何"类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文