(四)typescript之类
2021/7/23 23:26:47
本文主要是介绍(四)typescript之类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.class的定义
ts认为属性不应该是动态增加的,属性应该在类创建时就应该被确定,因此在ts中使用属性列表来描述类中的属性。
属性列表可以设置默认值,可以修饰成可选属性class Person { name: string = 'yzr'; // 设置属性默认值 age?: number; // 修饰成可选属性 constructor(name: string, age: number) { this.name = name; // this.age = age; } } let p = new Person('bai', 200);tsconfig 中配置strictpropertyinitialization: true 表示必须初始化表达式,且在构造函数中明确赋值 除了在属性列表中描述属性类型,还可以在constructor的参数中描述属性类型
class Person { age?: number; constructor(public name: string, age: number) { this.name = name; // this.age = age; } } let p = new Person('bai', 200);这种方式必须在属性名前加一个属性访问修饰符
2.属性的访问修饰符
public
修饰符(谁都可以访问到)
class Animal { public name: string; // 不写public默认也是公开的 public age: number; constructor(name: string, age: number) { this.name = name; this.age = age; } } class Cat extends Animal { constructor(name: string, age: number) { super(name, age); console.log(this.name, this.age); // 子类访问 } } let p = new Cat('Bai', 18); console.log(p.name, p.age); // 外层访问
protected
修饰符 (自己和子类可以访问到)
class Animal { constructor(protected name: string, protected age: number) { this.name = name; this.age = age; } } class Cat extends Animal { constructor(name: string, age: number) { super(name, age); console.log(this.name, this.age) // 子类中可以访问 } } let p = new Cat('Bai', 18); console.log(p.name,p.age);// 外部无法访问
private
修饰符 (除了自己都访问不到)
class Animal { constructor(private name: string, private age: number) { this.name = name; this.age = age; console.log(this.name, this.age); // 自身可以访问 } } class Cat extends Animal { constructor(name: string, age: number) { super(name, age); console.log(this.name, this.age); // 无法访问 } } let p = new Cat('Bai', 18); console.log(p.name, p.age); // 无法访问
readonly
修饰符 (只能读取该值)
class Animal { constructor(public readonly name: string, public age: number) { this.name = name; this.age = age; } changeName(name: string) { this.name = name; // 无法成功赋值,仅读属性只能在constructor中被赋值 } }
3.静态属性和方法
class Animal { static type = '哺乳动物'; // 静态属性 static getName() { // 静态方法 return '动物类'; } } let animal = new Animal(); console.log(Animal.type, Animal.getName());
4.super
class Animal { static getType() { return '动物'; } say(message: string) { console.log(message); } } class Cat extends Animal { static getType() { // 静态方法中的super指代的是父类 return super.getType(); } say() { // 原型方法中的super指代的是父类的原型 super.say('猫猫叫'); } } let cat = new Cat(); console.log(Cat.getType(), cat.say());
5.抽象类
抽象类无法被实例化,只能被继承,抽象方法不能在抽象类中实现,只能在抽象类的具体子类中实现,而且必须实现。
abstract class Animal{ name!:string; abstract speak():void } class Cat extends Animal { speak(){ console.log('猫猫叫'); } }
这篇关于(四)typescript之类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-05feign默认connecttimeout和readtimeout是多少-icode9专业技术文章分享
- 2024-07-05idea控制台,日志太多,导致部分想看得日志被刷走 搜不到-icode9专业技术文章分享
- 2024-07-05The server selected protocol version Tls10 is not accepted by client preferences [TLs12]-icode9专业技术文章分享
- 2024-07-05怎么清理项目缓存-icode9专业技术文章分享
- 2024-07-04安装 Eyoucms详细图文教程-icode9专业技术文章分享
- 2024-07-04ueditor 复制文章时,图片的链接是一个下载图片地址,该如何处理?-icode9专业技术文章分享
- 2024-07-04怎样判断host有没有对wordpress有缓存呢-icode9专业技术文章分享
- 2024-07-04具有编译功能的系统make后,无法ssh连接-icode9专业技术文章分享
- 2024-07-04make后如何升级ssh-icode9专业技术文章分享
- 2024-07-03微信支付提示下单账户与支付账户不一致-icode9专业技术文章分享