TypeScript 构造函数中的公共成员在类中是公共的,而私有成员是私有的,我对吗?
如果是这样,公共成员和属性之间的有效区别是什么?
假设不同之处在于属性可以更像 c# 属性(也就是说,可以有与其访问相关联的代码),为什么要公开一个字段,而没有使其成为属性所固有的保护?
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;
}
}
意味着_x
并且_y
不能从类外访问,但只能通过构造函数分配,如果你想在 TypeScript 中编写相同的代码,它将是:
class Car {
constructor(private _x: number, private _y: number) {}
}
如果您使用过 TypeScript,您会注意到我们使用this
关键字来访问这些变量。
如果只是参数,那么在类的构造函数中使用this._x
OR是什么意思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)
.