今天要来介绍TypeScript(TS)的存取子(Accessors)。
在类别(Class)之中可以宣告getter与setter存取子,
来存取物件成员。
若要定义getter存取子读取属性值,只要使用get关键字,
後面接属性名称与小括号。
若要定义setter存取子修改属性值,只要使用get关键字,
後面接属性名称与小括号,小括号之中传入值。
那麽我们来看看范例吧 :
class Employee {
constructor(private empId : number,private empName: string) {}
showInfo() {
return this.empId + "-" + this.mpName ;
};
//定义getter存取子 读取 属性值
get name(){
return this.empName ;
}
//定义setter存取子 修改 属性值
set name(name:string ){
this.empName = name ;
}
}
我来讲解一下范例的程序码吧,
首先先宣告一个Employee类别,
接着在此类别内加入constructor建构函式并且设定存取成员,
而这里的成员前方皆有加上private成员存取修饰词,
意味着这些成员只有在这类别中可以使用,
再来在这类别中加入一个函式,
之後可以呼叫使用,
最後定义
一个名为name的getter存取子,来读取empName;
一个名为name的getter存取子,来修改empName。
那麽都宣告好了之後,
使用方式如下:
//一般类别使用方式
let emp1 = new Employee(1, "Mary");
console.log(emp1.empId) ; //1
console.log(emp1.empName) ; //Mary
console.log(emp1.showInfo()) ; //1-Mary
//用存取子修改empName
emp1.empName = "John";
console.log(emp1.empId) ; //1
console.log(emp1.empName) ; //John
console.log(emp1.showInfo()) ; //1-John
因为事先有建立存取子,
所以可以直接将empName改名,
另外要特别注意的是,
不是所有的JS都有支援getter与setter存取子,
若是遇到不支援的问题,
建议可以在tsconfig.json档案组态设定,
编译选项target设定在**es5以上(含)**的版本,
即可解决。
今天介绍了利用存取子来读取与修改成员值,
这种取代方式要小心别让後面的程序码盖掉原来需要的值喔,
Day15 done~一半啦,
加油加油!
<<: [Day29] Tableau 轻松学 - TabPy 启动排程
询问各位大大,我在网路上看到要转移空间,就是按下延伸磁碟机。 但是我的的C槽却一直无法出现,延伸磁...
常见的 HTML elements 图片 (img) 想要在网页放上图片,可以使用img标签,他不用...
前言 大家好,我是辅大的学生,这次选择Flutter作为挑战的主题,因为接触Flutter的时间非常...
Given an m x n board of characters and a list of s...
嘿嘿 到了第28八天啦 雀跃的心情 就像在京都 看着漫天散落的粉嫩樱花 今天这题超简单 因为我要去补...