类
class Greeter { greeting: string constructor(message: string) { this.greeting = message } greet() { return `Hello,${this.greeting}` }}let greeter = new Greeter('world')
继承
class Animal { move(s: number = 0) { console.log(`Animal moved ${s}m.`); }}class Dog extends Animal { bark() { console.log('woof! woof!'); }}const dog = new Dog()dog.bark()dog.move(10)dog.bark()class Animal { name: string; constructor(theName: string) { this.name = theName; } move(distanceInMeters: number = 0) { console.log(`${this.name} moved ${distanceInMeters}m.`); }}class Snake extends Animal { constructor(name: string) { super(name); } move(distanceInMeters = 5) { console.log("Slithering..."); super.move(distanceInMeters); }}class Horse extends Animal { constructor(name: string) { super(name); } move(distanceInMeters = 45) { console.log("Galloping..."); super.move(distanceInMeters); }}let sam = new Snake("Sammy the Python");let tom: Animal = new Horse("Tommy the Palomino");sam.move();tom.move(34);// Slithering...// Sammy the Python moved 5m.// Galloping...// Tommy the Palomino moved 34m.public private readonlyclass Animal { private name: string public age: number readonly money: number constructor(theName: string) { this.name = theName this.age = 18 }}class Rhino extends Animal { constructor() { super("Rhino"); }}class Employee { private name: string; constructor(theName: string) { this.name = theName; }}// new Animal('nn').name //私有的无法访问let animal = new Animal("Goat");let rhino = new Rhino();let employee = new Employee("Bob");// animal.money = 100 // error 只读不能修改animal = rhino;// animal = employee; // 错误: Animal 与 Employee 不兼容.
protected 静态属性
class Person { protected name: string static color: string constructor(name: string) { this.name = name } greet(){ return Person.color }}class Employee extends Person { private department: string constructor(name: string, department: string) { super(name) this.department = department } public getElevatorPitch() { return `my name is ${this.name} and I work in ${this.department}` }}let xiaoming = new Employee('xiaoming','shop')console.log(xiaoming.getElevatorPitch());// console.log(xiaoming.name); //属性“name”受保护,只能在类“Person”及其子类中访问。
把类当做接口使用
class Point { x: number; y: number;}interface Point3d extends Point { z: number;}let point3d: Point3d = { x: 1, y: 2, z: 3 };