Day 6 基本型别 - part 3

好的,接下来就来介绍剩下的型别~分别是 Union、Aliases、Literal。

Union 型别可以接受指定多种型别给参数,这边延续 Day 4 的例子:

function add(input1: number, input2: number) {
  const result = input1 + input2
  return result
}

这边原本指定带进去 function 的参数只能是 number,但是如果今天想要透过这个 function 相加不只是数字的值的话,那就可以用到 Union 型别,在型别後面加上 |,再接续另一个想指定的型别:

function combine(input1: number | string, input2: number | string) {
  const result = input1 + input2
  return result
}

只要有需要的话,可以指定各种型别到参数,也不限定只能用两个,要三个也行~

上面的 input1input2 指定了相同的 Union 型别,所以在这边我们可以用 Aliases 型别把重复指定的型别整合起来:

type Combinable = number | string

接下来就可以把上面重复指定的型别用 Combinable 替换掉了:

function combine(input1: Combinable, input2: Combinable) {
  const result = input1 + input2
  return result
}

Literal 型别则是直接指定该变数的值,根据文件说明:

let x: "hello" = "hello";
// OK
x = "hello";
// ...
x = "howdy";
// error: Type '"howdy"' is not assignable to type '"hello"'.

当指定变数 x 的型别是 "hello" 时,那该变数便不能再改变其值,其实跟 JavaScript 的 const 一样,但在这边其实没有多大的用处,不过如果把这个跟 Union 型别结合在一起的话,在一些情况下会比较实用,比如说有一个 function 的设计只能接收某些指定的值时:

function printText(s: string, alignment: "left" | "right" | "center") {
  // ...
}
printText("Hello, world", "left");
printText("G'day, mate", "centre");
// error: Argument of type '"centre"' is not assignable to parameter of type '"left" | "right" | "center"'.

不只字串的 Literal 型别,数字以及布林值也一样能够用这个方式。

今天的学习笔记暂且到此,感谢阅读。:)


<<:  Day 6 - 从 foot-printing 开始

>>:  [Day6] Ajax Type Ahead

Day5 中秋就是要继续烤肉阿-日式盐葱酱烧肉

吃了美式和韩式烤肉,两天都是重口味烤肉,今天换清爽一点的日式烤肉吧 这次要自制日式盐葱酱,家里一秒变...

[Day27] Vue3 E2E Testing: Cypress 实战之 Todo MVC (下)

前情提要 前两天,我们开始为 Vue.js • TodoMVC 攥写 E2E 测试,并分别在 Cyp...

Day 1 - 什麽是 HomeLab 及网路

网路,是我们生活圈不可缺少的一部分。 每天一早,不少人都会打开手机查看新的讯息、新闻或影片。 由此可...

Day5 工作分解WBS怎麽拆

谈到专案产出如何变成小步骤,这就是一门专业的学问,就是每个专案绝对不一样的地方。什麽?你说维护专案都...

{Day29}Espresso

Espresso Espresso是一种UI Test自动化测试框架,可以在短时间跑完测试并且可以跟...