博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TypeScript基础入门 - 类 - 存取器
阅读量:6360 次
发布时间:2019-06-23

本文共 1380 字,大约阅读时间需要 4 分钟。

hot3.png

转载

项目实践仓库

https://tag: 1.1.2

为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能直接运行看到输出的结果。

npm install -D ts-node

后面自己在练习的时候可以这样使用

npx ts-node 脚本路径

存取器

TypeScript支持通过getters/setters来截取对对象成员的访问。 它能帮助你有效的控制对对象成员的访问。下面来看如何把一个简单的类改写成使用 get和 set。 首先,我们从一个没有使用存取器的例子开始

class Employee {    fullName: string    }let employee = new Employee();employee.fullName = "durban zhang";if (employee.fullName) {    console.log(employee.fullName);}

运行后结果如下

$ npx ts-node src/classes_4.tsdurban zhang

我们可以随意的设置 fullName,这是非常方便的,但是这也可能会带来麻烦。

下面这个版本里,我们先检查用户密码是否正确,然后再允许其修改员工信息。 我们把对 fullName的直接访问改成了可以检查密码的 set方法。 我们也加了一个 get方法,让上面的例子仍然可以工作。

let passcode = 'pass';class Employee {    private _fullName: string;    get fullName(): string {        return this._fullName;    }    set fullName(name: string) {        if (passcode && passcode === 'pass') {            this._fullName = name;        } else {            console.log('授权失败');        }    }}let employee = new Employee();employee.fullName = "durban zhang";if (employee.fullName) {    console.log(employee.fullName);}

运行后结果如下

$ npx ts-node src/classes_4.tsdurban zhang

可以修改一下密码,来验证一下存取器是否是工作的。当密码不对时,会提示我们没有权限去修改员工。

对于存取器有下面几点需要注意的:

首先,存取器要求你将编译器设置为输出ECMAScript 5或更高。 不支持降级到ECMAScript 3。 其次,只带有 get不带有 set的存取器自动被推断为 readonly。 这在从代码生成 .d.ts文件时是有帮助的,因为利用这个属性的用户会看到不允许够改变它的值。

本实例结束实践项目地址

https://tag: 1.1.3

 

转载于:https://my.oschina.net/zhangdapeng89/blog/1926033

你可能感兴趣的文章
Windows phone应用开发[16]-数据加密
查看>>
通用数据压缩算法简介
查看>>
The next Industry Standard in IT Monitoring, a python implementation Nagios like tool --- Shinken
查看>>
(笔记)找工作,该怎么进补
查看>>
div的显示和隐藏以及点击图标的更改
查看>>
(轉貼) Ubuntu將在ARM平台netbook上現身 (SOC) (News) (Linux) (Ubuntu)
查看>>
SQL注入测试工具:Pangolin(穿山甲)
查看>>
在html 的img属性里只显示图片的部分区域(矩形,给出开始点和结束点),其他部份不显示,也不要拉伸...
查看>>
程序员第二定律:量化管理在程序员身上永无可能
查看>>
ubuntu一些脚本的执行顺序
查看>>
类继承的结构
查看>>
Intel 被 ARM 逼急了
查看>>
testng + reportng 测试结果邮件发送
查看>>
百度亮相iDASH,推动隐私保护在人类基因组分析领域的应用
查看>>
Python「八宗罪」
查看>>
你的隐私还安全吗?社交网络中浏览历史的去匿名化
查看>>
NeurIPS 2018|如何用循环关系网络解决数独类关系推理任务?
查看>>
Windows 10 份额突破 40%,Windows 7 连跌四月终回升
查看>>
怎么把Maven项目转为动态Web项目?
查看>>
Arm发布Cortex-A76AE自动驾驶芯片架构,宣示车载系统市场主权
查看>>