Day12-TypeScript(TS)的选择性属性(Optional Properties)

今天要来讲解TypeScript(TS)的选择性属性(Optional Properties),
在使用函式时时常会碰到参数有时需要有时不需要的情形,
但逻辑又几乎相同,
这时就可以把这些函示写在一起,再利用选择性属性参数传入,
就能避免重复一直写相同的函示。

首先来复习一下Day8的介面范例吧。

//宣告介面
interface MyFunc{
    x:number;
    y:number;
}

//函式
let func1=(p:MyFunc)=>{
    console.log(p.x,p.y);
}

//使用函式
func1({x:10});//error  每项参数都必须对应到
func1({x:10,y:20});
func1({x:10,y:20,z:20}); //error  未标记z视为错误

这个范例所标记的参数在使用时不能多也不能少
如此一来,在使用时就会缺少弹性,
那若是参数传入可有可无时,
这时就需要使用选择性属性来增加函式的弹性,
使用方式非常简单,
在介面属性名称後面加上 ? 就行了,
例如,若是y为可有可无的参数,
介面的宣告如下,

//宣告介面
interface MyFunc{
    x:number;
    y?:number;
}

如此一来,y即为选择性属性

那麽函示可能也会有些不同需要做些逻辑判断,
例如,

//函式
let func1=(p:MyFunc)=>{
    if(p.y){
        console.log(p.x,p.y);
    }else{
        console.log(p.x);
    }
}

//使用函式
func1({x:10,y:20});
func1({x:10});

像这样将y订为选择性属性後,
在使用上就有更多不同的弹性了,
也可以避免重复写太多相同的函式喔。

今日结语

今天教得很简单,
但是非常实用呢,
希望大家可以利用选择性属性,
让自己的程序码更加简洁俐落,
也更容易维护喔!


<<:  Progressive Web App 存取本机档案: File System Access API (14)

>>:  Day 22 资料宝石:【Lab】RDS架构 建立自己的第一台云端资料库 (中)

Day9-元件沟通传递(part1)

元件之所以很强大是他还有个资料传递功能,让各个元件互相沟通,今天就要来研究他到底要怎麽传资料! pr...

Day 28: Tensorflow分类 分类图像衣物 (三)

Tensorflow 衣物图像分类(三) 辅助阅读: Basic classification: C...

企划实现(22)

使用firebase简易资料库 在使用前要将专案连结至firebase 第一步:在firebase创...

Jetpack Compose - Stateful and Stateless

相较於传统的 Android View,Jetpack Compose 在 Android 开发上还...

【资料结构】引线的练习实作

引线的练习实作 规则 为达到节省叶节点指向NULL的空间浪费 说明 1.在建立节点的同时,设置左右引...