abstract class in TypeScript

Abstract classes are mainly for inheritance where other classes may derive from them. We cannot create an instance of an abstract class. An abstract class in Typescript is defined by the abstract keyword. 
An abstract class typically includes one or more abstract methods or property declarations. The class which extends the abstract class must define all the abstract methods.

```
abstract class Person {
    name: string;
    
    constructor(name: string) {
        this.name = name;
    }

    display(): void{
        console.log(this.name);
    }

    abstract create(name: string): Person;
}

class Employee extends Person { 
    empCode: number;
    
    constructor(name: string, code: number) { 
        super(name); 
        this.empCode = code;
    }

    create(name:string): Person { 
        return new Employee(name, 1);
    }
}

let emp: Person = new Employee("James", 100);
emp.display(); 
let emp2: Person = emp.create('Steve');
emp2.display();
```