打字稿构造函数中的公共与私有

时间:2016-07-28 19:16:01

标签: typescript

我是对的,Typecript构造函数中的公共成员在类中是公共的,私有成员是私有的吗?

如果是这样,公众成员和财产之间的有效区别是什么? \

假设不同之处在于属性可以更像c#属性(也就是说,可以将代码与其访问权限相关联),为什么要将字段设为公开,而没有内在的保护把它变成财产?

2 个答案:

答案 0 :(得分:4)

private创建一个字段,public创建一个属性。

这不像是一个C#属性,实际上是什么使它成为一个属性只是它是公共的。没有访问者。

答案 1 :(得分:1)

让我们首先看到C#类,然后将其转换为Type Script:

public class Car {
    private int _x;
    private int _y;
    public Car(int x, int y)
    {
        this._x = x;
        this._y = y;
    }
}

不能从类外访问_x和_y,而只能通过构造函数进行分配,如果要在TypeScript中编写相同的代码,它将是:

class Car {
    constructor(private _x: number, private _y: number) {}
}

如果您使用过Type Script,您会注意到,我们使用此关键字来访问这些变量。

如果仅是参数,则在类的构造函数中使用this._xthis._y的含义是什么,因为它也会创建成员变量。

这是从上面的Type Script代码生成的JavaScript代码:

var Car = (function () {
    function Car(_x, _y) {
        this._x = _x;
        this._y = _y;
    }
    return Car;
})();

this._x和this_y在另一个函数中移动,这意味着Car对象无法访问它,但是您可以启动并分配new Car(10, 20)

希望我能正确解释:)