TypeScript-入门(七)-类

70 阅读2分钟

1.配置属性初始化检查

{
  "compilerOptions": {
    "strictPropertyInitialization": true // 类定义的时候,如果声明了类型,constructor里面一定要初始化,不然会报错
}
class Test {
    // 声明了但是没有初始化
    name: string
    age: number
    gender: '男' | '女'
    constructor() { }
}

image.png

2.定义一个类

使用ts定义类时,必须声明类有哪些属性,否则会报错
属性可以声明为只读、也可以设置默认值

class Test {
    // 声明有哪些属性
    name: string
    age: number
    // 设置了默认值后,constructor里可以不用写
    gender: '男' | '女' = '男'
    readonly id: string = ''
    constructor(name: string, age: number,) {
        this.name = name;
        this.age = age;
    }
}

image.png

3.访问修饰符

  • public 默认值,表示公有的,即类的内部和类的外部都可以使用
  • private 表示私有的,只在类的内部可以访问
  • protected 表示受保护的,在类的内部和派生类中可以访问,但在类的外部不可访问
  • 这些访问修饰符不仅可以修饰属性,也可以修饰方法
class Test {
    // 声明有哪些属性
    name: string
    age: number
    // 设置了默认值后,constructor里可以不用写
    gender: '男' | '女' = '男'
    // 仅内部可以访问这个属性
    private readonly id: string = ''
    constructor(name: string, age: number,) {
        this.name = name;
        this.age = age;
    }
    public getName(): void {
        console.log(this.name);
    }
    private hasProperty(): void { }
}

4.属性简写

如果某个属性,通过构造函数传参,并且不做任何处理就直接赋值给该属性,可以进行简写

class Test {
    gender: '男' | '女' = '男'
    private readonly id: string = ''

    // 通过形参设置 访问修饰符 后,可以省略上面的类型声明
    constructor(public name: string, private age: number,) {}
}

5.访问器

当我们设置的属性需要符合一定的规则的时,可以使用访问器来设置
有点类似vue中的计算属性

class Test {
    private _age: number = 0
    constructor(public name: string) { }
    set age(val: number) {
        if (val > 10) {
            this._age = 10
        } else if (val < 0) {
            this._age = 0
        } else {
            this._age = val
        }
    }
    get age(): number {
        return Math.floor(this._age)
    }
}
const test: Test = new Test('张三')
// 设置值时,会自动调用set方法
test.age = 20
// 获取值时,会自动调用get方法
console.log(test.age);