abstract class Department { constructor(public name: string) { } printName(): void { console.log("Department name: " + this.name); } // must be implemented in derived classes abstract printMeeting(): void; } class AccountingDepartment extends Department { constructor() { // constructors in derived classes must call super() super("Accounting and Auditing"); } printMeeting(): void { console.log("The Accounting Department meets each Monday at 10am."); } generateReports(): void { console.log("Generating accounting reports..."); } } let department: Department; //ok to create a reference to an abstract type department = new Department();//error: cannot create an instance of an abstract class department = new AccountingDepartment();//ok to create and assign a non-abstract subclass department.printName(); department.printMeeting(); department.generateReports(); //error: method doesn't exist on declared abstract type