TypeScrip Class类

示例代码:

//定义类
class Person {
    constructor () {
 
    }
    run () {
        
    }
}

在TypeScript是不允许直接在constructor 定义变量的 需要在constructor上面先声明 如果了定义了变量不用 也会报错 通常是给个默认值 或者 进行赋值

class Person {
    name:string
    age:number = 0
    bol:boolean
    constructor(name:string, age: number, bol: boolean) {
        this.name = name
        // this.age = age
        this.bol = bol
    }
}

new Person('zs', 18 , false)

类的修饰符 public、 private、 protected 和 static 静态属性 和 静态方法

public 修饰符 可以让你定义的变量 内部访问 也可以外部访问 如果不写默认就是public
private 修饰符 代表定义的变量私有的只能在内部访问 不能在外部访问
protected 修饰符 代表定义的变量私有的只能在内部和继承的子类中访问 不能在外部访问
static 定义的属性 不可以通过this 去访问 只能通过类名去调用
static 静态函数 同样也是不能通过this 去调用 也是通过类名去调用

class Person1 {
    public name:string //使用public 修饰符 可以让你定义的变量 内部访问 也可以外部访问 如果不写默认就是public
    private age:number // 使用  private 修饰符 代表定义的变量私有的只能在内部访问 不能在外部访问
    protected bol:boolean //使用  protected 修饰 符 代表定义的变量私有的只能在内部和继承的子类中访问 不能在外部访问
    static aaa:string = '123456' // 静态属性 我们用static 定义的属性 不可以通过this 去访问 只能通过类名去调用 (Person1.aaa)
    constructor(name:string, age: number, bol: boolean) {
        this.name = name
        this.age = age
        this.bol = bol
    }
    // static 静态函数 同样也是不能通过this 去调用 也是通过类名去调用
    static run () {
        this.aaa
        return this.aaa1()
    }

    static aaa1() {
        return 'skjdfbnoidfb'
    }

}

new Person1('zs', 18 , false)

console.log(Person1.run())

interface 定义 类

interface 定义类 使用关键字 implements 后面跟interface的名字多个用逗号隔开 继承还是用extends

 
interface PersonClass {
    get(type: boolean): boolean
}
 
interface PersonClass2{
    set():void,
    asd:string
}
 
class A {
    name: string
    constructor() {
        this.name = "123"
    }
}
 
class Person extends A implements PersonClass,PersonClass2 {
    asd: string
    constructor() {
        super()
        this.asd = '123'
    }
    get(type:boolean) {
        return type
    }
    set () {
 
    }
}

抽象类

我们在A类定义了 getName 抽象方法但为实现
我们B类实现了A定义的抽象方法 如不实现就不报错 我们定义的抽象方法必须在派生类实现

abstract class N {
    name:string
    constructor(name:string) {
        this.name = name
    }
    setName(name:string) {
        this.name = name
    }
    abstract getName():string

}

class M extends N {
    constructor() {
        super('zs')
    }
    getName():string {
        return this.name
    }
}

let q = new M()
q.setName('zs1')
q.getName()

你可能感兴趣的:(typescript,javascript,前端)