TS中的类

135 阅读1分钟

属性

  • TS是不允许类动态创建属性,而是使用属性列表来描述类中的属性
  • 属性的初始化检查:通过配置strictPropertyInitializition: true
    • 属性初始化位置:构造函数中,属性默认值
  • 属性可以是可选的,使用?
  • 属性可以修饰为只读的,使用readonly
  • 使用访问修饰符
    • 访问修饰符可以控制类中的某个成员的访问权限
    • public:默认的访问修饰符,公开的,所有代码均可访问
    • private: 私有的,只有在类中可以访问
    • protected
  • 属性简写: 如果某个属性,通过构造函数的参数传递,并且不做任何处理的赋值给该属性,可以进行简写
// ts中使用es6的写法会报错
class User{
    constructor(name: string, age: number){
        this.name = name
        this.age = age
    }
}

// ts 使用属性的写法
class User{
    name: string
    age: number
    pid?: string 
    constructor(name: string, age: number){
        this.name = name
        this.age = age
    }
}

const u = new User('zero', 18)

// 属性初始化检查, 配置strictPropertyInitializition: true,当没有构造函数时会报错
class User{
    name: string
    age: number
}
const u = new User('zero', 18)

// 属性初始化的位置
// 构造函数中
class User{
    name: string
    age: number
    gender: '男' | '女'
    constructor(name: string, age: number, gender: '男' | '女' = '男'){
        this.name = name
        this.age = age
        this.gender = gender
    }
}

const u = new User('zero', 18)

// 属性默认值
class User{ 
    name: string
    age: number
    gender: '男' | '女' = '男'
    constructor(name: string, age: number){
        this.name = name
        this.age = age
    }
}

const u = new User('zero', 18)
u.gender = '女'

// 属性简写
class User{
    pid?: string 
    constructor(public name: string, public age: number){
    }
}

const u = new User('zero', 18)

访问器

  • 用于控制属性的读取和赋值