【九月打卡】第52天 TypeScript(8)
标签:
Typescript
类的静态属性
- 类的静态属性就是直接挂载到类上的属性,而不是实例或者原型上的属性
- 在ES6中使用static表示静态属性或者方法
// ES5
function Person(name:string, age: 18) {
this.name = name;
this.age = age;
}
Person.attr="move"
// ES6
class Person {
static attr = 'move';
constructor(public name: string, public age: number) {}
}
const person = new Person('tz', 18);
类的getter和setter
如下,当想获取或者修改私有属性_name时,不可以在类外修改,可以通过getter获取,通过setter修改
class Person {
constructor(private _name: string) {}
get name() {
return this._name;
}
set name(val: string) {
this._name = val;
}
}
const person = new Person('tz');
console.log(person.name); // tz
person.name = 'tom';
console.log(person.name); // tom
单例
class Person {
private static instance: Person;
private constructor() {}
static getInstance() {
if (!this.instance) {
this.instance = new Person();
}
return this.instance;
}
}
const person = Person.getInstance();
类中的readonly
readonly只能读不能改
class Person {
public readonly name: string;
constructor(name: string) {
this.name = name
}
}
const person = new Person('tz');
person.name = 'tom'; // 报错: name属性只读不能改
console.log(person.name); // tz
抽象类
- 抽象类把其他类共有的属性或者方法抽离出来,用abstract来表示
- 抽象类不可以实例化,只能被继承
- 抽象类中也可以有具体属性或者方法的实现
abstract class Geom {
constructor(public width: string){}
getType() {
return "Geom";
}
abstract getArea(): number;
}
class Circle extends Geom{
getArea(): number {
return 123;
}
}
class Square{
getArea(): number {
return 456;
}
}
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦