Day 7 Functions

今天要来对 function 来做深入一点的介绍。

如果想要把 function 存在变数里,可以对该变数作更精确的 function 规范:

function add(n1: number, n2: number):number {
  return n1 + n2
}

function print(input1: string, n2: number) {
  console.log(input1, n2)
}

let combineValues: (a: number, b:number) => number

combineValues = add
combineValues = print

可以看到 combineValues 定义了 function 型别,然後连要接收的 function 架构也都定义好了,要接收两个是数字的参数以及会 return 一个数字,这时可以看到第二个 combineValue 会报错,因为跟原本定义好的不同:
https://ithelp.ithome.com.tw/upload/images/20210921/20131989bF6ug7yzIU.png

另外根据文件,当 function 没有 return 的叙述或是不会 return 任何值时,那就代表 function return 的值是 void,因为 TypeScript 也可以为 return 的值进行型别定义:

function add(n1: number, n2: number):number {
  return n1 + n2
}

在引数括号後面的 number 就是代表这个 function 会 return 的值的型别,如果没有特别指定的话 TypeScript 其实也会自行做 Type Inference:
https://ithelp.ithome.com.tw/upload/images/20210921/20131989JbIt79EWjG.png

void 的状况就会变成这样:
https://ithelp.ithome.com.tw/upload/images/20210921/20131989vVHLO4umGc.png
这边要特别注意的是没有 return 值的 voidundefined 是不一样的,在 JavaScript 里面如果想要试着拿到没有 return 值的 function 时会拿到 undefined,但是在这边 undefinedvoid 是完全不一样的东西。

有一个跟 void 很像的状况是 return 值设定成 never,我目前理解的是虽然没有 return 值的 function 可以设定成 void,不过其实还是可以 return 值,但是 never 是绝对不会 return 任何值的,想要先暂且理解到这边,等之後如果有更深的理解後会再回来多做说明。

今天的学习笔记就到这边,谢谢阅读。:)


<<:  Day8-React Hook 篇-认识 useMemo

>>:  【8】资料集有没有事先 shuffle 对训练所产生的影响

[Day30] Angular 的 Routing

终於来到第三十天了~~~~!不过其实本系列不会在今天结束,我们的前端 app 丑得要命,也还没布署到...

Docker - Docker 执行 Maven with Dockerfile

Docker - Docker 执行 Maven with Dockerfile 参考资料 Dock...

Day23 什麽是 HTTP 状态码(HTTP Status Code)?

大家好,我是乌木白,今天要和大家介绍,HTTP 状态码? 什麽是 HTTP 状态码? 在上一篇,我...

[用 Python 解 LeetCode] (002) 26. Remove Duplicates from Sorted Array

题干懒人包 基本上跟27题很像,输入是一个已经排序好的数组,最後输出非重复数值的数量,然後以下几点要...

Mac显示“您的系统已耗尽应用程序内存"怎麽办?

有的人MacBook或Mac上有时会显示显示一条讯息:“您的系统已耗尽应用程序内存"/“s...