函数
-
函数类型
- 为函数定义类型
function add(x: number, y: number) { return x+y } let myAdd = function(x: number, y: number): number { return x+y }
可以给每个参数添加类型之后再为函数本身添加返回值类型。
Typescript
能够根据返回语句自动判断出返回值类型,因此通常省略它- 书写完整函数类型
let myAdd: (x: number, y: number) => number = function(x: number, y: number): number { return x + y }
函数的类型只是由参数类型和返回值组成的
只要参数类型是匹配的,就认为是有效的函数类型 -
可选参数和默认参数
JavaScript
中,每个参数可传可不传,不传参的时候,值为undefined
,在typescript
里可以使用?
实现可选参数的功能function AllName(firstName: string, lastName?: string) { ... }
当没有传递这个参数或者传递的值为
undefined
时,可以为这个参数提供一个默认值
与普通可选参数不同,带默认值的参数如果出现必选参数前面,用户必须明确传入function fullName (firstName: string, lastName="smith")
-
剩余参数
剩余参数会被当做个数不限的可选参数,可以一个没有,也可以有很多个,把这些剩余参数用
[]
组织起来,用...
来引用function fullName(firstName: string, ...restName: string[]){ ... }
-
this
和箭头函数 -
重载
同一个函数提供多个函数类型定义
function pickCard(x: {suit: string; card: number; }[]): number; function pickCard(x: number): {suit: string; card: number; }; function pickCard(x): any { if (typeof x == "object") { let pickedCard = Math.floor(Math.random() * x.length); return pickedCard; } else if (typeof x == "number") { let pickedSuit = Math.floor(x / 13); return { suit: suits[pickedSuit], card: x % 13 }; } }