(四)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-11-20获取apk的md5值有哪些方法?-icode9专业技术文章分享
- 2024-11-20xml报文没有传 IdentCode ,为什么正常解析没报错呢?-icode9专业技术文章分享
- 2024-11-20如何知道代码有没有进行 Schema 验证?-icode9专业技术文章分享
- 2024-11-20Mycat教程:新手快速入门指南
- 2024-11-20WebSocket入门:轻松掌握WebSocket基础
- 2024-11-19WebSocket入门指南:轻松搭建实时通信应用
- 2024-11-19Nacos安装资料详解:新手入门教程
- 2024-11-19Nacos安装资料:新手入门教程
- 2024-11-19升级 Gerrit 时有哪些注意事项?-icode9专业技术文章分享
- 2024-11-19pnpm是什么?-icode9专业技术文章分享