TypeScript中如何推断Mongoose模型回调函数的参数类型
解决Mongoose Model.find回调参数的TypeScript类型推断问题
不用被迫用any,Mongoose对TypeScript有完整的类型支持,只要正确定义Model的文档类型,就能自动推断回调参数的类型,具体做法如下:
第一步:定义文档接口
先声明对应集合的文档结构接口,比如:interface Item { name: string; price: number; // 补充你的其他字段 }第二步:创建带类型的Model
创建Model时传入这个接口,让Mongoose关联类型:const Item = mongoose.model<Item>('Item', new mongoose.Schema({ name: String, price: Number }));第三步:自动推断回调类型
这时再调用Item.find,TypeScript会自动识别回调参数的类型:Item.find({}, (err, items) => { // err 类型自动推断为 mongoose.CallbackError // items 类型自动推断为 Item[] });
如果你的Model已经创建好了,也可以手动给回调参数指定类型:
Item.find({}, (err: mongoose.CallbackError, items: Item[]) => { // 逻辑代码 });
Mongoose的类型定义已经内置了所有方法的回调参数类型,不用依赖官方文档的API说明,直接用IDE的智能提示就能看到类型信息。
内容的提问来源于stack exchange,提问作者Infinite Learner
相关产品推荐
相关产品推荐

