TypeScript class 的访问控制
默认的控制权限是 public.public 属性的字段和方法,可以在 class 外部被访问。
class Greeter {public greet() {console.log("hi!");}
}
const g = new Greeter();
g.greet();
因为 public 已经是默认的可见性修饰符,所以你不需要将它写在类成员上,但可能出于样式/可读性原因选择这样做。
protected
受保护的成员仅对声明它们的类的子类可见。
Exposure of protected members
派生类需要遵循其基类契约,但可以选择公开具有更多功能的基类子类型。 这包括公开受保护的成员:
class Base {protected m = 10;
}
class Derived extends Base {// No modifier, so default is 'public'm = 15;
}
const d = new Derived();
console.log(d.m); // OK
请注意,Derived 已经能够自由地读取和写入 m,因此这不会有意义地改变这种情况的“安全性”。 这里要注意的主要事情是,在派生类中,如果这种暴露不是故意的,我们需要小心地重复受保护的修饰符。
private
private 类似于 protected,但不允许从子类访问成员:
上述例子表明我们不能在子类里将父类的 private 属性提升成 protected 或者 public.
子类也无法访问父类的 private 字段。
Cross-instance private access
在 TypeScript 类实例内部,一个实例能访问其他实例的私有字段吗?答案是可以。
class A {private x = 10;public sameAs(other: A) {// No errorreturn other.x === this.x;}
}
TypeScript class 访问控制的镜花水月
与 TypeScript 类型系统的其他方面一样,private 和 protected 仅在类型检查期间强制执行。 这意味着 JavaScript 运行时构造(如 in 或简单属性查找)仍然可以访问私有或受保护成员。
class MySafe {private secretKey = 12345;
}
Try
// In a JavaScript file...
const s = new MySafe();
// Will print 12345
console.log(s.secretKey);
上面这段 TypeScript 代码虽然有语法错误,但是编译成 JavaScript 之后,仍然能够成功执行,访问到 s 的 secretKey 字段。
更多Jerry的原创文章,尽在:“汪子熙”:
TypeScript class 的访问控制相关推荐
- TypeScript 从听说到入门(上篇)
我为什么会这样念念又不忘 / 你用什么牌的箭刺穿我心脏 我也久经沙场 / 戎马生涯 / 依然 / 被一箭刺伤 --李荣浩<念念又不忘> 接下来我会分上.下两篇文章介绍 TypeScript ...
- TypeScript技术知识整理
TypeScript技术知识整理 文章目录 TypeScript技术知识整理 一.环境搭建与编译执行 1.安装 `TypeScript` 编译器 2.编写代码 **代码编辑器 - vscode** 3 ...
- TypeScript (TS
1.Node卸载 1)控制面板卸载 2)安装位置删除文件夹 3)c盘用户 下去删除.npmrc文件 2.下载Nodejs 最新下载地址: 下载 | Node.js 中文网 安装: 双击打开,下一步,同 ...
- TypeScript笔记(基础大全到井格游戏案例)
TypeScript学习笔记 参考文档 参考视频 一.介绍 TypeScript(Typed JavaScript at Any Scale):添加了类型系统的 JavaScript,适用于任何规模的 ...
- TypeScript 接口和TypeScript类
目录 一.TypeScript 接口 1.TypeScript 接口的定义和简单使用 2.联合类型和接口 3.接口和数组 4.接口继承 二.TypeScript 类 1.TypeScript 类的定义 ...
- TypeScript 全面介绍
目录 TS(TypeScript) 1. TS的安装和配置 2. 第一个TS程序(举例) 3. 配置自动编译 4. 变量声明 5. 函数 6. 重载 7. class 8. 接口 9. 模块化开发 T ...
- TypeScript 基础类型+函数+接口+类
1.简介: TypeScript 是 JavaScript 的一个超集.由微软开发的自由和开源的编程语言.设计目标是开发大型应用.是一种面向对象的编程语言,遵循强类型 javascript与types ...
- TypeScript入门基础
文章目录 1 TypeScript介绍 1.1 什么是TypeScript? 1.2 为什么需要 TypeScript 1.3 JS与TS的相关知识 1.4 TypeScript特性 1.5 Type ...
- TypeScript与Vue组合开发记录点(一)
TypeScript与Vue组合开发记录点 TypeScript使用Vue-property-decorator属性装饰器 @Component(options:ComponentOptions = ...
最新文章
- oracle sql判断相等,获取多行相等的人员(Oracle SQL)
- 微信链接里的图像如何得到更清晰
- 核桃编程 | 前端可观测性建设之路
- XML—— 验证XML文档
- 一文搞懂 什么是CPU上下文?为什么要切换?如何减少切换?
- arcmap shp导出cad无反应_如何使用ArcMap将Excel数据转换为shp数据
- AI时代的稀缺人才:解读数据科学家成长的4个阶段
- 用5毛特效,让1000万人上瘾!这群乡村大妈,打了所有流量明星的脸
- 京东618期间将累计发放百亿消费券
- centos配置epel和remi源
- linux 怎么格式化u盘写保护,u盘写保护如何解除?去掉保护模式的具体方法
- 各位大佬,Spark的重点难点系列暂时更新完毕
- 【吐槽】那些让人“口吐芬芳”的App登录骚操作
- 利用MTviz绘制线粒体基因组结构图
- Visual Studio 类向导HRESULT:0x80070057 (E_INVALIDARG)的异常的解决方案
- PDF如何在线翻译?PDF在线翻译的方法
- win10下yolov3训练自己的数据集
- Java基本类型介绍
- Cannot find any credentials with id 283d811e-7a65-4977-b560-9c66555e19d6
- puppeteer做页面监控