javascript - Skapa instans via konstruktörsegenskapen hos en annan instans (TS2351: Detta uttryck är inte konstruerbart)
Jag behöver skapa en instans av en klass som jag inte har tillgång till. Vad jag har är en annan instans av den klassen. Med andra ord: biblioteket exporterar inte klassen, utan bara dess instans, och jag vill ha en annan instans. Följande kod löser problemet:
const myInstance = new importedInstance.constructor(params);
Det fungerar bra som ren JavaScript, men inte som TypeScript. TypeScript ger ett fel:
TS2351: Detta uttryck kan inte konstrueras. Typen 'Function' har inga konstruktionssignaturer.
Finns det någon lösning för TypeScript utöver any-cast som new (importedInstance as any).constructor(params)?
Svar #1
Du kan tala om för TypeScript att konstruktorn har en konstruktionssignatur genom att använda new() => InstanceType. Så i ditt fall skulle det bli något i stil med detta:
const myInstance = new (importedInstance.constructor as
new(...params: typeof params) => typeof importedInstance)(params);
