typescript类的问题?

class Point {
    public x: any;
    public y: any
    constructor(x: any, y: any) {
        this.x = x;
        this.y = y
    }
}

let point = new Point(1, 2);
console.log(point.x)
class Point {
    constructor(public x: any, public y: any) { }
}

let point = new Point(1, 2);
console.log(point.x)

第一种写法我能理解,可是第二种是什么意思呢,在constructor的参数里加上public就不用在类里面声明属性了吗?就不用写public x: any;和this.x = x;了???
这里面是什么原理呢?

阅读 1.6k
2 个回答

这是typescript语法,第一种和第二种写法是等价的,或者说第二种写法是第一种写法的简化。参数加上private或者public,会自动加上一个类的属性和参数同名,然后在构造器中给这个类属性赋值,是个语法糖。

官方文档在 Classes 一节中说明了这种情况,可以在构造函数参数前加 privateprotectedpublicreadonlyreadonly 可以与其他几个组合)来同时声明同名成员变量(属性)

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题