Day15-TypeScript(TS)的存取子(Accessors)

今天要来介绍TypeScript(TS)的存取子(Accessors)。

在类别(Class)之中可以宣告gettersetter存取子,
来存取物件成员。

若要定义getter存取子读取属性值,只要使用get关键字,
後面接属性名称与小括号。

若要定义setter存取子修改属性值,只要使用get关键字,
後面接属性名称与小括号,小括号之中传入值。

宣告存取子(Accessors)

那麽我们来看看范例吧 :

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成员存取修饰词
意味着这些成员只有在这类别中可以使用,
再来在这类别中加入一个函式,
之後可以呼叫使用,
最後定义
一个名为namegetter存取子,来读取empName
一个名为namegetter存取子,来修改empName

使用存取子(Accessors)

那麽都宣告好了之後,
使用方式如下:


//一般类别使用方式
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 启动排程

>>:  [DAY 15]cog架构用法(2/2)

如何把D槽空间分给C槽

询问各位大大,我在网路上看到要转移空间,就是按下延伸磁碟机。 但是我的的C槽却一直无法出现,延伸磁...

Day6 HTML 语法简易介绍(三)

常见的 HTML elements 图片 (img) 想要在网页放上图片,可以使用img标签,他不用...

Flutter基础介绍与实作-Day1 Flutter基本概念介绍

前言 大家好,我是辅大的学生,这次选择Flutter作为挑战的主题,因为接触Flutter的时间非常...

Day 27 LeetCode 212. Word Search II

Given an m x n board of characters and a list of s...

[Day 28] Crypto 小替换

嘿嘿 到了第28八天啦 雀跃的心情 就像在京都 看着漫天散落的粉嫩樱花 今天这题超简单 因为我要去补...