3

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

如果是这样,公共成员和属性之间的有效区别是什么?

假设不同之处在于属性可以更像 c# 属性(也就是说,可以有与其访问相关联的代码),为什么要公开一个字段,而没有使其成为属性所固有的保护?

4

2 回答 2

5

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

这不像 C# 属性,事实上,使它成为属性的原因只是它是公共的。没有访问器。

于 2016-09-20T16:32:54.133 回答
1

让我们先看看 C# 类,然后我们将其转换为 TypeScript:

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) {}
}

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

如果只是参数,那么在类的构造函数中使用this._xOR是什么意思this._y,因为它也会创建成员变量。

这是从上面的 TypeScript 代码生成的 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).

于 2018-11-16T23:52:39.327 回答