错误TS2348:类型'typeof ObjectID'的值不可调用。你的意思是包括'新'吗?

时间:2016-08-14 05:42:15

标签: angular typescript mongoose typescript2.0

当我将string转换为ObjectId时,我使用

import * as mongoose from 'mongoose';

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

TypeScript 1.x 中效果很好,在更新到 TypeScript 2.x 后,我收到错误:

  

错误TS2348:类型'typeof ObjectID'的值不可调用。你是否   意味着包括'新'?

我该如何解决?感谢

2 个答案:

答案 0 :(得分:2)

mongoose文档显示您可以在没有ObjectId关键字的情况下实例化new,但是打字稿定义(至少是我见过的那些,如the one on DefinitelyTyped)没有那么,如果你想避免打字稿编译错误,你需要使用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);

答案 1 :(得分:0)

应该是mongoose.Schema.Types.ObjectId而不是mongoose.Types.ObjectId