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);
