Abstract in Typescript

ABSTRACT
Abstract classes provide a way to define common properties and methods which are drived by mulptiple classes.
This inhance code reuse and help common interface for related classes.
Abstract class can not be instantiated or created object.
Abstract classes focus on class inheritance and sharing common functionality.
Getter: This method comes when you want to access any property of an object. A getter is also called an accessor.
Setter: This method comes when you want to change any property of an object. A setter is also known as a mutator.
                  
                    abstract class Category {
                      categoryName: string;
                      constructor(name: string) {
                        this.categoryName = name;
                      }

                      display(): void {
                        console.log(this.categoryName);
                      }
                      abstract find(name: string): Category;
                    }

                    class Brand extends Category {
                      brandCode: number;

                      constructor(name: string, code: number) {
                        super(name); // must call super()
                        this.brandCode = code;
                      }

                      find(name: string): Category {
                        // execute AJAX request to find an employee from a db
                        return new Brand(name, 1);
                      }
                    }

                    let brand: Category = new Brand('James', 100);
                    brand.display(); //James
                    let brand2: Category = brand.find('Steve');