错误 TS2348:“typeof ObjectID”类型的值不可调用。您的意思是包含“新”吗?

Hon*_*iao 1 mongoose typescript typescript2.0 angular

当我将 a 转换为stringObjectId,我使用

import * as mongoose from 'mongoose';

const objId = mongoose.Types.ObjectId(strId);
Run Code Online (Sandbox Code Playgroud)

它在TypeScript 1.x 中运行良好,更新到TypeScript 2.x 后,出现错误:

错误 TS2348:“typeof ObjectID”类型的值不可调用。您的意思是包含“新”吗?

我该如何解决?谢谢

Nit*_*mer 5

猫鼬文档表明您可以在ObjectId没有new关键字的情况下进行实例化,但是打字稿定义(至少是我见过的那些,比如绝对类型上的那个)没有那个,所以如果你想避免打字稿编译错误,你会需要使用new关键字:

const objId = new mongoose.Types.ObjectId(strId);
Run Code Online (Sandbox Code Playgroud)

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

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

const objId = (mongoose.Types.ObjectId as ObjectIdConstructor)(strId);
Run Code Online (Sandbox Code Playgroud)