函数的声明
1.声明式
function sum(a: number, b: number,): number {
return a + b
}
2. 函数表达式
下面代码中,add: 后的(a: number, b: number) => number可以理解为对add这个变量的约束,表示它将接收一个函数,该函数的参数有a、b,且类型都是number;该函数的返回值是number类型
注意:这里的=>与箭头函数中的作用是不一样的,在 TypeScript 的类型定义中,=> 用来表示函数的定义,左边是输入类型,需要用括号括起来,右边是输出类型
const add: (a: number, b: number) => number = (a: number, b: number): number => {
return a + b
}
3.使用接口声明一个函数
interface ISum {
// 冒号前面是参数的约束,冒号后面是返回值的类型约束
(x: number, y: number): number
}
const fn: ISum = (x, y) => x + y
当一个函数被声明后,调用时携带的参数必须与声明的一致,不允许少或者多,否则都会报错的,如下
sum(1) // 应有 2 个参数,但获得 1 个
sum(1,2,3) // 应有 2 个参数,但获得 3 个
可选参数
typescript中,函数参数也可以像接口一样,设置可选的参数,用?修饰,如下代码所示,参数c就是可选的,需要注意的是,务必将可选参数放在必要参数的后面,也就是说,可选参数后面不能再出现必要参数
const add: (a: number, b: number, c?: number) => number = (a: number, b: number, c?: number): number => {
if (typeof c === "number") {
return a + b + c
}
return a + b
}
add(1, 2, 3) // 6
add(1, 2) // 3
参数默认值
typescript中,也支持函数参数设置默认值,设置了默认值的参数,自动转为可选参数
function sum(a: number, b: number = 2): number {
return a + b
}
sum(1)