1. // 类
    2. export = {}
    3. class Person {
    4. public name: string // 默认就是 public
    5. private age: number //私有属性
    6. protected readonly gender: boolean // 内部或者子类才能访问 只读属性:只能声明或者构造函数中去赋值 二选一
    7. constructor (name: string, age: number) {
    8. this.name = name
    9. this.age = age
    10. this.gender = true
    11. }
    12. sayHai (msg: string): void {
    13. console.log(`Hai, I am ${this.name}, ${msg}`)
    14. }
    15. }
    16. const tom = new Person('tom', 28)
    17. console.log(tom.name)
    18. // 这里报错,不能在外部访问其私有属性
    19. // console.log(tom.age)
    20. // 内部或者子类才能访问
    21. // console.log(tom.gender)
    22. class Student extends Person {
    23. constructor (name: string, age: number) {
    24. super(name, age)
    25. // 字类中可以访问父类中受保护的属性
    26. console.log(this.gender)
    27. }
    28. }
    29. const tom2 = new Person('tom2', 23)