typescript和Es6的class区别?【专栏10】

前端人

共 2282字,需浏览 5分钟

 ·

2021-06-10 11:36

TypeScript是ES6的超集。至于需不需要使用,在于你所需要的场景。

相同点

  1. 都是采用extends语法进行继承
  2. 在constructor中都需要首先使用super()调用父类构造函数,然后才能获取父类的属性
  3. 最终都是通过ES5的原型链进行继承

不同点

  1. typescript class中有属性字段有private、protected、readonly等修饰符
  2. typescript constructor构造函数参数必须定义所属类型
  3. typescript class中可以存着静态方法
  4. typescript class方法参数会类型验证
  5. es6中, 只有静态方法,没有静态属性。
  • public 共有的。类的内外都可以使用。
  • protected 受保护的。类的内部使用,继承的子类中使用。
  • private 私有的。类的内部使用。

ES6

class UserBase {
  constructor (color) {
    this.color = color;
  }
  static showColor () {
    //color ==>undefined
    console.log(`我是一个有颜色的公有静态函数,看看我的颜色${this.color}`)
  }
}

class User extends UserBase {
  constructor (userName, userAge) {
    super("yellow");
    this.userName=userName;
 this.userAge=userAge;
  }
  showInfo(){
     console.log(`名字${this.userName}今年:${this.userAge}`)
  }
}

const user=new User("鬼鬼",18);
user.showInfo();//实例函数
User.showColor()//静态函数

typescript

class UserBase{
    static color="yellow";//静态属性
    static showColor() {//静态方法
      console.log(`我是一个有颜色的公有静态函数,看看我的颜色${this.color}`)
    }
}

class User extends UserBase{
    private userName: string;
    private userAge: number;
    constructor(userName : string,userAge:number){
  super();//必须调用super才能继承showColor函数
        this.userName=userName;
  this.userAge=userAge;
    }
    private showInfo ():void{
      console.log(`名字${this.userName}今年:${this.userAge}`)
    }
}

const user=new User("鬼鬼",18);
user.showInfo();//实例函数
User.showColor();//静态函数

说明

本专栏总共汇总了150道题每道题目答案没有多余扯皮的部分,就是单纯的答案。

关注公众号,每天一到面试题,为下次跳槽准备,人人都能冲击30k+,点击↓关注【鬼哥】

当前进度【#010题】,如果你能点赞分享、鬼哥骑自行车也是开心的

浏览 55
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报