-
-
Notifications
You must be signed in to change notification settings - Fork 94
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Is there an existing issue for this?
- I have searched the existing issues
Describe the issue
I get an unexpected typescript compile error:
"Cannot assign an abstract constructor type to a non-abstract constructor type."
You can find a stackblitz here: https://stackblitz.com/edit/typescript-playground-6bnct5?file=index.ts
Models/DTOs/VMs
enum VehicleType {
car = 'car',
bus = 'bus',
}
class VehicleDto {
name: string;
type: VehicleType;
}
abstract class Vehicle {
constructor(public name: string, vehicleType: VehicleType) {}
static create(name: string, vehicleType: VehicleType): Vehicle {
switch (vehicleType) {
case VehicleType.bus:
return new Bus(name);
default:
return new Car(name);
}
}
}
class Car extends Vehicle {
constructor(name: string) {
super(name, VehicleType.car);
}
}
class Bus extends Vehicle {
constructor(name: string) {
super(name, VehicleType.bus);
}
}
Mapping configuration
import { createMapper, createMap, constructUsing } from '@automapper/core';
import { classes } from '@automapper/classes';
const mapper = createMapper({
strategyInitializer: classes(),
});
createMap(
mapper,
VehicleDto,
Vehicle,
constructUsing((source) => Vehicle.create(source.name, source.type))
);
Steps to reproduce
https://stackblitz.com/edit/typescript-playground-6bnct5?file=index.ts
Expected behavior
No typescript compile errors with the given code.
Screenshots
Minimum reproduction code
No response
Package
- I don't know.
-
@automapper/core
-
@automapper/classes
-
@automapper/nestjs
-
@automapper/pojos
-
@automapper/mikro
-
@automapper/sequelize
- Other (see below)
Other package and its version
No response
AutoMapper version
8.8.1
Additional context
No response
timonmasberg, timtos, jnborche, nvdnkpr and VonRehberg
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working