在JavaScript中,无法直接从类外部访问使用TypeScript编写的具有受保护/私有字段的类。TypeScript中的受保护字段使用protected
修饰符声明,私有字段使用private
修饰符声明。这些修饰符在编译为JavaScript后会被擦除,因此在JavaScript中无法直接访问。
受保护字段只能在类内部及其子类中访问,而私有字段只能在类内部访问。这样的设计有助于封装和隐藏类的内部实现细节,提高代码的安全性和可维护性。
如果需要从类外部访问这些字段,可以通过提供公共的访问方法(getter和setter)来间接访问。例如,可以在类中定义一个公共的getter方法来获取受保护/私有字段的值,或者定义一个setter方法来修改字段的值。
以下是一个示例:
class MyClass {
protected protectedField: string;
private privateField: string;
constructor() {
this.protectedField = 'protected value';
this.privateField = 'private value';
}
getProtectedField(): string {
return this.protectedField;
}
setProtectedField(value: string): void {
this.protectedField = value;
}
getPrivateField(): string {
return this.privateField;
}
setPrivateField(value: string): void {
this.privateField = value;
}
}
const myObject = new MyClass();
console.log(myObject.getProtectedField()); // 输出:protected value
console.log(myObject.getPrivateField()); // 输出:private value
myObject.setProtectedField('new protected value');
myObject.setPrivateField('new private value');
console.log(myObject.getProtectedField()); // 输出:new protected value
console.log(myObject.getPrivateField()); // 输出:new private value
在上述示例中,通过定义公共的getter和setter方法,我们可以间接地访问和修改受保护/私有字段的值。这样可以保持类的封装性,并且可以在访问方法中添加额外的逻辑或验证。
领取专属 10元无门槛券
手把手带您无忧上云