Public 与 Typescript 构造函数中的私有

Public vs Private in Typescript Constructors

TypeScript 构造函数中的 public 成员在 class 中是 public 并且私有成员是私有的,我说得对吗?

如果是,public 成员和属性之间的有效区别是什么?

假设不同之处在于属性可以更像 c# 属性(即,可以具有与其访问相关联的代码)为什么要制作 field public,没有使其成为 属性?

的固有保护

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

这不像 C# 属性,事实上它之所以成为 属性 只是因为它是 public。没有访问器。

让我们先看看 C# class 然后我们将它转​​换成 TypeScript:

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

意味着 _x_y 不能从 class 之外访问,但只能通过构造函数分配,如果你想在 TypeScript 中编写相同的代码,它将是:

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

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

如果它只是参数,那么在 class 中使用 this._xthis._y 是什么意思,因为它也创建了成员变量。

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

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

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