angular - fel TS2348: Värdet av typen 'typeof ObjectID' kan inte anropas. Menade du att inkludera 'new'?


När jag konverterar en string till ObjectId, använder jag

import * as mongoose from 'mongoose';

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

Det fungerar bra i TypeScript 1.x, efter uppdatering till TypeScript 2.x, fick jag felet:

fel TS2348: Värde av typen 'typeof ObjectID' kan inte anropas. Menade du att inkludera 'new'?

Hur kan jag lösa det? Tack

Svar #1

Mongoose-dokumentationen visar att du kan instansiera ObjectId utan new-nyckelordet, men Typescript-definitionerna (åtminstone de jag har sett, som den på DefinitelyTyped) har inte det, så om du vill undvika Typescript-kompileringsfel behöver du använda new-nyckelordet:

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

Du bör också kunna göra något som:

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

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

Relaterade artiklar