mongoose 错误TS2348:类型“typeof ObjectID”的值不可调用,是否要包含“new”?

7kqas0il  于 2023-04-21  发布在  Go
关注(0)|答案(1)|浏览(206)

string转换为ObjectId时,我使用

import * as mongoose from 'mongoose';

const objId = mongoose.Types.ObjectId(strId);

TypeScript 1.x中运行良好,更新到TypeScript 2.x后出现错误:
错误TS2348:类型“typeof ObjectID”的值不可调用。是否要包含“new”?
我该怎么解决呢?谢谢

bkhjykvo

bkhjykvo1#

mongoose文档显示你可以示例化ObjectId而不需要new关键字,但是typescript定义(至少我见过的,比如DefinitelyTyped上的)没有,所以如果你想避免typescript编译错误,你需要使用new关键字:

const objId = new mongoose.Types.ObjectId(strId);

您还应该能够执行以下操作:

type ObjectIdConstructor = {
    (str: string): mongoose.Types.ObjectId;
    new (str: string): mongoose.Types.ObjectId;
}

const objId = (mongoose.Types.ObjectId as ObjectIdConstructor)(strId);

相关问题