I want create classes dynamicaly in runtime, and I want parametrize the class name.
function newClass(className:string) {
return class MyDynamicClass { }
}
// expected class name: "Person"
let personClass = newClass("Person")
// expected class name: "Contact"
let contactClass = newClass("Contact")
P.S.: The proposed duplicate question (ES6 Dynamic class names) is with wrong accepted answer and other answers does not fulfil my requirements.
I don't think it is possible to make dynamic class name like here:
class [className] {}
It is not allowed.
However, you can create an object with className property (class expression):
const newClass = (className: string) => ({
[className]: class { }
}[className])
// expected class name: "Person"
let personClass = newClass("Person")
personClass.name // Person
I know, personClass returns class {} without name. I think this is the closest working solution.