ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

五、TypeScript class 类(三)

2022-02-20 09:02:35  阅读:133  来源: 互联网

标签:TypeScript name age dog Animal 抽象类 class string


readonly

https://www.typescriptlang.org/docs/handbook/2/classes.html#readonly
你可以使用 readonly 关键字将属性设置为只读的。 只读属性必须在声明时或构造函数里被初始化。

class Animal {
    private age: Number;
    public readonly name: string;
    
    constructor(name: string, age: Number) {
        this.name = name;
        this.age = age;
    }

}
const dog: Animal = new Animal('zhangsan', 28)
// dog.name='李四'; // error 无法分配到 "name" ,因为它是只读属性
console.log(dog.name);

out

zhangsan

Getters / Setters

https://www.typescriptlang.org/docs/handbook/2/classes.html#getters–setters

class Animal {

     surname: string;
     name: string;

    get fullName():string{
        return this.surname+"-"+this.name; 
    }
    set fullName(fullName:string){
        const names = fullName.split('-')
        this.surname = names[0]
        this.name = names[1]
    }

}
const dog: Animal = new Animal()

dog.surname = '司马'
dog.name =  '三三'
console.log(dog.fullName)

dog.fullName = '西门-吃藕'
console.log(dog.surname, dog.name)

out

司马-三三
西门 吃藕

如果编译遇到

error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.

执行

tsc 文件.ts -t es5

static Members

https://www.typescriptlang.org/docs/handbook/2/classes.html#static-members

  • 静态属性, 是类对象的属性
  • 非静态属性, 是类的实例对象的属性
class Animal {

    static age: number;
    name: string;
    static getA() {
    // 静态方法,不能直接调用类里的属性
        /* console.log(this.name) */  /* error,不能直接调用类里的属性 */
        console.log(this.age + "岁的 小嫂子")
    }

}
Animal.age = 22;
Animal.getA()

out

22岁的 小嫂子

抽象类

https://www.typescriptlang.org/docs/handbook/2/classes.html#abstract-classes-and-members

用abstract定义抽象类和抽象方法,抽象类中的抽象方法不包含具体实现并且必须在派生类中实现

1、抽象方法必须在抽象类中

2、抽象类和抽象方法是一个标准,定义标准后,子类中必须包含抽象定义的方法

abstract class Animal {
   age: number;
   name: string;

   constructor(name: string, age: number) {
       this.age = age;
       this.name = name;
   }
   abstract eat(): void;

}

class Dog extends Animal {

   constructor(name: string, age: number,) {
       super(name, age)
   }
   eat(): void {
       console.log("一条" + this.age + "岁的" + this.name + "小狗,每次吃饭都是哐哐猛吃,简直不敢相信.")
   }
}

const dog: Dog = new Dog('张思', 22);
dog.eat();

out

一条22岁的张思小狗,每次吃饭都是哐哐猛吃,简直不敢相信.

提示:

抽象类中可以没有抽象方法,但有抽象方法的一定是抽象类

标签:TypeScript,name,age,dog,Animal,抽象类,class,string
来源: https://blog.csdn.net/Mr_yangzc/article/details/122988005

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有