TypeScript 能手养成之旅 Day 7 物件型别-函式型别

前言

前一篇我们介绍了基础物件型别,今天要来介绍同样是物件型别之一的函式型别,让我继续探索 TypeScript,Go~

函式的型别推论与注记

在一开始我们有个 askAge 的函示,将会回传一个字串,我们要来一一完成 TypeScript 的要求。

首先定义好函式,很快的,就得到了 TypeScript 的型别推论了。

let askAge = (name, age) => {
  return `${name} is ${age} years old.`
}

let ageQuestion = askAge('CY', 28)

注记参数後

let askAge = (name: string, age: number) => {
  return `${name} is ${age} years old.`
}

let ageQuestion = askAge('CY', 28)

将参数注记上型别後,看来一切就正常了,但是接下来我们要更完整使用 TypeScript,因此我们要在输出的变数 ageQuestion 上也加上型别,这样我们可以更安心使用。

let askAge = (name: string, age: number): string => {
  return `${name} is ${age} years old.`
}

let ageQuestion: string = askAge('CY', 28)

状况一 : 当参数型别错误时,会发生的问题

let askAge = (name: string, age: number):string => {
  return `${name} is ${age} years old.`
}

// 将 28 从 number 改为 string 时,喷错了
let ageQuestion: string = askAge('CY', '28')

TypeScript 会进一步提醒我们,参数型别错误。

状况二 : 当没有回传值时,会发生的问题

let askAge = (name: string, age: number) => {
  // 没有回传值
  `${name} is ${age} years old.`
}

let ageQuestion: string = askAge('CY', 28)

如果需要回传值,必须乖乖的把 return 加上去 。

不需回传值时,使用 void

let askAge = (name: string, age: number): void => {
  `${name} is ${age} years old.`
}

不推荐的用法 - any

let askAge = (name: any, age: any): any => {
  return `${name} is ${age} years old.`
}

let ageQuestion: any = askAge('CY', 28)

如果使用 any 注记,这样使用 TypeScript 就失去了使用它的意义了。

结语

今天探讨了函式的型别推论与注记,除了参数要定义型别以外,还有记得要定义是否要回传值,要的话会是什麽型别,明天让我们继续往下探索吧!


<<:  Vue.js 从零开始:Hoisting , undefined,not defined

>>:  Day 9:架设 Prometheus (1)

【Day 6】BERT由Transformer模型构建而成

前五天,我们讲解了BERT模型的核心概念、输入输出以及模型的类型,现在让我们进入模型的结构、原理部分...

Day 10 利用 Cloudflare 来管理你的网域和子网域

将你所购买的网域名称,透过 Cloudflare 来设定 DNS 的好处多多。除了可以预防一些基本的...

[Day 10] 从零开始的股票预测 - 基本面

一、基本面 基本面分析是一种证券或股票估价的方法,利用财务分析和经济学上的研究来评估企业价值或预测证...

Day 06:我们未来再相见

前言一 因为一些原因,今天应该是我铁人赛的完赛日。完成了 20%,剩下的 80%,就留给大家去阅读更...

【13】模型套不套用资料增强 (Data Augmentation) 的比较实验

Colab连结 资料增强(Data Augmentation),是一个当今天资料集样本不多时,透过调...