博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TypeScript学习(三)—— 类
阅读量:6871 次
发布时间:2019-06-26

本文共 2437 字,大约阅读时间需要 8 分钟。

前篇:

js中的类可以看之前写的:。

接下来说说TypeScript中的class。在TS中class的定义方式和es6中的语法糖class很相似。

定义class

class A {    name:string //声明name是string类型,省略了public    constructor(name:string){        this.name = name    }    run():void {        //定义A.prototype上的run方法        console.log(this.name)    }    getName():string{        return this.name    }    setName(name:string):void{        this.name = name    }}const a = new A() //没给默认值不传参数会报错const a = new A('汪汪!') //没给默认值不传参数会报错a.run() //汪汪!a.setName('咪咪!')console.log(a.getName()) //'咪咪'复制代码

class的继承

class Animal {  //定义父类    name:string    constructor(name:string){        this.name = name    }    sayName():void{        console.log(`i am ${
this.name}`) }}class Cat extends Animal{ //定义个继承父类的子类 call:string constructor(name:string, call:string = 'mimimi!'){ //如果和Animal中构造函数传入的name类型不同就会报错 super(name) //作用是把this传到父类,调用父类构造函数 this.call = call } sayCall():void{ console.log(`我是${
this.name},我的叫声是:${
this.call}`) }}const cat = new Cat('咪咪', '喵喵')cat.sayName() //i am 咪咪cat.sayCall() //我是咪咪,我的叫声是:喵喵复制代码

类里面的修饰符

public:公有属性,在类里面、子类、类外面都可以访问

protected:保护类型,在类里面、子类里面可以访问,在类外部没法访问

private:私有属性,在类里面可以访问,子类和类外部无法访问

如果不写默认为public。(其实只是代码检测会报错,编译成es5后都可以访问得到)

//publicclass Animal {    public name:string...    sayName():void{        console.log(`i am ${this.name}`) //类里面可以访问    }}class Cat extends Animal{...    sayCall():void{        console.log(`我是${this.name},我的叫声是:${this.call}`) //子类中可以访问    }}const animal = new Animal('dog')console.log(animal.name) //类外面可以访问//protectedclass Animal {    protected name:string...    sayName():void{        console.log(`i am ${this.name}`) //类里面可以访问    }}class Cat extends Animal{...    sayCall():void{        console.log(`我是${this.name},我的叫声是:${this.call}`) //子类中可以访问    }}const animal = new Animal('dog')console.log(animal.name) //编译器报错,类外面访问不到//privateclass Animal {    private name:string...    sayName():void{        console.log(`i am ${this.name}`) //类里面可以访问    }}class Cat extends Animal{...    sayCall():void{        console.log(`我是${this.name},我的叫声是:${this.call}`) //编译器报错,子类中访问不到    }}const animal = new Animal('dog')console.log(animal.name) //编译器报错,类外面访问不到复制代码

类中的静态属性和静态方法

class Animal {...    static SF():void{ //定义静态方法        console.log(this.SP)    }    static SP:string = '我是静态属性'  //定义静态属性,不建议定义静态属性}Animal.SF() // =》我是静态属性  静态方法是在类上调用的方法,方法中的this指向Animal本身console.log(Animal.SP) // =》我是静态属性复制代码

转载地址:http://kecfl.baihongyu.com/

你可能感兴趣的文章
小菜鸡进阶之路-First week
查看>>
MyBatis之ResultMap标签
查看>>
kubernetes-1.11.0集群部署之master集群 (二)
查看>>
IDEA PermGen space内存溢出
查看>>
Create a RHEL6 PXE Installation Server
查看>>
【Android游戏开发二十二】(图文详解)游戏中灵活实现动画播放!
查看>>
桌面支持--Office2013没有Office Picture Manage怎么安装
查看>>
chmod修改文件权限失败
查看>>
数据结构与算法-->互为素数
查看>>
Linux系统学习方法——写给小白
查看>>
Nginx服务器报500 Internal Server Error错误
查看>>
链表的游标实现
查看>>
Linux下查看CPU信息、机器型号等硬件信息命令
查看>>
Lync Server 2013 部署 _ 部署简介及系统要求
查看>>
前端小随笔
查看>>
view属性大全
查看>>
Java文件编码示例
查看>>
CactiFans V1.0中文版发布
查看>>
HTML如何显示小于号“<”等特殊符号?
查看>>
别伤了虚拟桌面管理员的"心"
查看>>