1. class Greeter {
    2. greeting: string;
    3. constructor(message: string) {
    4. this.greeting = message;
    5. }
    6. greet() {
    7. return "Hello, " + this.greeting;
    8. }
    9. }
    10. let greeter = new Greeter("world");

    继承:
    在TypeScript里,我们可以使用常用的面向对象模式。 基于类的程序设计中一种最基本的模式是允许使用继承来扩展现有的类。

    1. class Animal {
    2. move(distanceInMeters: number = 0) {
    3. console.log(`Animal moved ${distanceInMeters}m.`);
    4. }
    5. }
    6. class Dog extends Animal {
    7. bark() {
    8. console.log('Woof! Woof!');
    9. }
    10. }
    11. const dog = new Dog();
    12. dog.bark();
    13. dog.move(10);
    14. dog.bark();

    派生类包含了一个构造函数,它必须调用super(),它会执行基类的构造函数。 而且,在构造函数里访问this的属性之前,我们一定要调用super()。 这个是TypeScript强制执行的一条重要规则。

    1. class Animal {
    2. name: string;
    3. constructor(theName: string) { this.name = theName; }
    4. move(distanceInMeters: number = 0) {
    5. console.log(`${this.name} moved ${distanceInMeters}m.`);
    6. }
    7. }
    8. class Snake extends Animal {
    9. constructor(name: string) { super(name); }
    10. move(distanceInMeters = 5) {
    11. console.log("Slithering...");
    12. super.move(distanceInMeters);
    13. }
    14. }
    15. class Horse extends Animal {
    16. constructor(name: string) { super(name); }
    17. move(distanceInMeters = 45) {
    18. console.log("Galloping...");
    19. super.move(distanceInMeters);
    20. }
    21. }
    22. let sam = new Snake("Sammy the Python");
    23. let tom: Animal = new Horse("Tommy the Palomino");
    24. sam.move();
    25. tom.move(34);