类
-
类的声明,关键字class
class User { } -
类的成员变量
class User { name: string constructor(name: string) { this.name = name; } } let u = new User('Tom') console.log(u.name) -
类里面的关键字
public private protected 默认是public
private,不可以在类外面直接访问,并且不可以被子类访问
public,在类外面可以直接访问和修改
protected,可以被子类访问
class User {
name: string
private _dna: string = ''
constructor(name: string) {
this.name = name;
}
get dna(): string {
return this._dna;
}
set dna(value: string) {
this._dna = value;
}
}
let u = new User('Tom')
// 不可以在类外面直接访问
// user._dna = ''
console.log(u.name)
-
类的继承,关键字 extends
class father { name: string = '' // 私有的以下划线开头 protected _dna: string = '' private _age: number = 30 get age(): number { return this._age; } set age(value: number) { this._age = value; } } class child extends father { sayDNA = () => { console.log(this._dna + '-aaaaaa') } }
面向对象编程的三大特性
- 多态
- 继承
- 封装
不用类产生的问题,作用域容易出问题,人容易出问题
var a = 1
function say() {
a = 2
}
say()
console.log(a)
//2
用类,虽然代码多了,但是作用域更加明确,反而不容易出问题
let l = new Lee();
// l.a = 2 //明确声明修改的是类的的成员变量,不容易出问题
console.log(l.a)
写代码五分钟,改bug两小时