如何在typescript中为来自api的作为对象的未知数据设置类型


app.put('/update-user/:id', (async (req: Request, res: Response) => {
const { id } = req.params;
const filter = { _id: new ObjectId(id) };
const user = req.body // Here data type is needed and typescript is showing error
console.log(user);
const option = { upsert: true };
const updatedUser = {
$set: {
...user,
},
};
const result = await userCollection.updateOne(filter, updatedUser, option);
res.send(result);
}) as RequestHandler);

可变用户的数据作为

interface Users {
name: string;
email: string;
}

但由于这是一种put方法,用户数据可能会有所不同。就像它可以添加另一个键一样:值为年龄:29岁,在这种情况下,我如何编写带有可变对象字段的接口?

我试图引入泛型类型。但作为一个打字新手,我没能成功。有人能帮我写正确的界面吗?

Typescript类型系统"消失";在运行时,这意味着类型系统应该被视为";提示";用于编译器/转发器。

通常,为user常量指定User类型应该仅被视为";提示";对于编译器:您不能保证这个";提示";在运行时有效/强制(因为User类型在运行时不可用(。

这意味着,即使你告诉编译器userUser,你也绝对可以放置一个看起来绝对不像User的响应体结构
变量分配过程中不会发生任何故障(例如,当您试图访问由于类型定义错误(或部分错误(而不存在的User属性时,下游会发生故障(

请记住,在某些空间中,您将需要具有未知类型结构的动态键入(响应的主体就是一个很好的例子(

类型脚本的优势在于编译器将保证类型赋值是"0";"合法";,但在某些领域,你需要";帮助;编译器,并自己表达期望的类型。

最新更新