我在TypeScript's Playground page上学习TypeScript
。
我不确定TypeScript
是否能很好地编译代码。
我创建了一个class
,并且该课程有一个name
作为私有成员。
因此,我做了一些测试,是否可以访问已编译代码中的类的私有成员。
但是,我成功访问了私人成员。
我只是在学习TypeScript
。所以我认为我可能选择了错误的选项。
(已添加)TypeScript版本:3.5.1
目标:ES5
JSX:None
选中的选项是:
noImplicitAny
stricNullChecks
strictFunctionTypes
stricPropertyInitialization
noImplicitThis
noImplicitReturns
alwaysStrict
class Person {
private _name: string;
_age: number;
constructor(name: string, age: number) {
this._name = name;
this._age = age;
}
setName(name: string) {
this._name = name;
}
getName(): string {
return this._name;
}
setAge(age: number) {
this._age = age;
}
getAge(): number {
return this._age;
}
}
const person = new Person('James', 23);
console.log(person.getName()); // James
console.log(person._name); // error: Property '_name' is private and only accessible within class 'Person'.
console.log(person._age); // 23
ES 5
"use strict";
var Person = /** @class */ (function () {
function Person(name, age) {
this._name = name;
this._age = age;
}
Person.prototype.setName = function (name) {
this._name = name;
};
Person.prototype.getName = function () {
return this._name;
};
Person.prototype.setAge = function (age) {
this._age = age;
};
Person.prototype.getAge = function () {
return this._age;
};
return Person;
}());
var person = new Person('James', 23);
console.log(person.getName()); // James
console.log(person._name); // James
console.log(person._age); // 23
有什么建议吗?
答案 0 :(得分:3)
目前,JavaScript没有真正的私有成员。 TypeScript中private
的概念仅用于帮助您防止编码错误。将来,ECMAScript可能会引入真正的私有成员,但是在此之前,您仍然可以在编译后访问“私有成员”。