Typescript构造函数中的公共与私有

Typescript构造函数中的公共与私有,typescript,constructor,private-members,public-members,Typescript,Constructor,Private Members,Public Members,TypeScript构造函数中的公共成员在类中是公共的,而私有成员是私有的,这对吗 如果是,公共成员和财产之间的有效区别是什么 假设区别在于属性的行为更像c#属性(也就是说,可以有与其访问相关联的代码),那么为什么要将字段设置为公共字段,而不提供将其设置为属性所固有的保护?private创建字段,public创建属性 这不像是C#属性,事实上,它之所以成为属性,只是因为它是公共的。没有访问器。让我们先看看C类,然后将其转换为TypeScript: public class Car { p

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

如果是,公共成员和财产之间的有效区别是什么


假设区别在于属性的行为更像c#属性(也就是说,可以有与其访问相关联的代码),那么为什么要将字段设置为公共字段,而不提供将其设置为属性所固有的保护?

private创建字段,public创建属性

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

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

public class Car {
    private int _x;
    private int _y;
    public Car(int x, int y)
    {
        this._x = x;
        this._y = y;
    }
}
表示不能从类外访问
\u x
\u y
,但只能通过构造函数进行分配,如果要在TypeScript中编写相同的代码,它将是:

class Car {
    constructor(private _x: number, private _y: number) {}
}
如果您使用过TypeScript,您会注意到我们使用
this
关键字来访问这些变量

如果它只是参数,那么在类的构造函数之外使用
this.\ux
this.\uy
有什么意义,因为它也会创建成员变量

以下是根据上述类型脚本代码生成的JavaScript代码:

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

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

通常您会使用一个字段,因为属性会增加更多的击键次数和代码复杂性,但没有优势?你能在这里更清楚地说明场地和财产吗。