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._x
或 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)
.
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._x
或 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)
.