Try   HackMD

Typescript - Using Class Types in Generics

Source
https://www.typescriptlang.org/docs/handbook/2/generics.html

Example

  • The constructors of ClassA and ClassB both take string arguments during object creation
  • The function getClassInstance has two parameters, one is a string parameter for object creation. The other is the class type for the constructor
class ClassA {
    private myName: string;

    constructor(name: string){
        this.myName = name;
    }

    public get name(): string {
        return this.myName;
    }
}


class ClassB {
    private myName: string;

    constructor(name: string){
        this.myName = name;
    }

    public get name(): string {
        return this.myName;
    }
    
    public get currentDate(): Date {
        return new Date();
    }
}


function getClassInstance <Type>(newName: string, classType: { new (name: string): Type }): Type {
    const classInstance = new classType(newName);
    return classInstance;
}

const classAInstance = getClassInstance('testA', ClassA)
console.log(classAInstance.name);

const classBInstance = getClassInstance('testB', ClassB)
console.log(classBInstance.name);
tags: typescript generics