TS学习总结(11/21)——类

96 阅读1分钟
  1. 类的定义

    class Person {
      constructor(public name: string) {}
      getName(): void {
        console.log(this.name);
      }
    }
    let p1 = new Person("hi");
    p1.getName();
    
  2. 存取器

    class User {
      myname: string;
      constructor(myname: string) {
        this.myname = myname;
      }
      get name() {
        return this.myname;
      }
      set name(value) {
        this.myname = value;
      }
    }
    
    let user = new User("hi");
    user.name = "echo";
    console.log(user.name);
    
  3. readyOnly只读属性

    class Animal {
      public readonly name: string;
      constructor(name: string) {
        this.name = name;
      }
      changeName(name: string) {
        this.name = name; 
      }
    }
    
    let a = new Animal("hi");
    
  4. 继承

    class Person {
      name: string;
      age: number;
      constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
      }
      getName(): string {
        return this.name;
      }
      setName(name: string): void {
        this.name = name;
      }
    }
    class Student extends Person {
      no: number;
      constructor(name: string, age: number, no: number) {
        super(name, age);
        this.no = no;
      }
      getNo(): number {
        return this.no;
      }
    }
    let s1 = new Student("hi", 18, 2);
    console.log(s1);
    
  5. 类里面的修饰符

    class Parent {
      public name: string;
      protected age: number;
      private car: number;
      constructor(name: string, age: number, car: number) {
        this.name = name;
        this.age = age;
        this.car = car;
      }
      getName(): string {
        return this.name;
      }
      setName(name: string): void {
        this.name = name;
      }
    }
    class Child extends Parent {
      constructor(name: string, age: number, car: number) {
        super(name, age, car);
      }
      desc() {
        console.log(`${this.name} ${this.age} ${this.car}`)
      }
    }
    
    let child = new Child("hi", 3, 1000);
    console.log(child.name);
    console.log(child.age); 
    console.log(child.car); 
    
  6. 静态属性、静态方法

    class Parent {
      static mainName = "Parent";
      static getmainName() {
        console.log(this);
        return this.mainName;
      }
      public name: string;
      constructor(name: string) {
        this.name = name;
      }
    }
    console.log(Parent.mainName);
    console.log(Parent.getmainName());
    
  7. 抽象类、抽象方法

    abstract class Animal {
      name!: string;
      abstract speak(): void;
    }
    class Cat extends Animal {
      speak() {
        console.log("miao");
      }
    }
    let animal = new Animal(); 
    let cat = new Cat();
    cat.speak();