# 函数类型
WARNING
函数类型
- 为函数定义类型
- 完整的函数类型
- 使用接口定义函数类型
- 使用类型别名
参数
- 可选参数
- 默认参数
- 剩余参数
重载
函数定义
function add (arg1: number, arg2: number): number {
return arg1 + arg2
}
let add2 = (arg1: number, arg2: number) => arg1 + arg2
1
2
3
4
5
6
7
2
3
4
5
6
7
// 定义函数类型
let add3: (x: number, y: number) => number
add3 = (arg1: number, arg2: number): number => arg1 + arg2
1
2
3
4
2
3
4
接口定义函数类型
interface Add {
(x: number, y: number): number
}
let addFun: Add = (arg1:number, arg2: number) => arg1 + arg2
1
2
3
4
2
3
4
类型别名定义函数类型
type AddT = (x: number, y: number) => number
let addFunT: AddT
addFunT = (arg1:number, arg2: number) => arg1 + arg2
1
2
3
2
3
函数的参数, 可选参数必须在最后面
type AddFunction = (arg1: number, arg2?:number) => number
let addFunction: AddFunction
addFunction = (x: number) => x
addFunction = (x: number, y: number | undefined) => x + (y ? y : 0)
1
2
3
4
5
2
3
4
5
// 参数设置默认值
let addFunction = (x: number, y = 3) => x + y
1
2
2
// 剩余参数
let handleData = (arg1: number, ...args: number[]) => {
// ...
}
1
2
3
4
2
3
4
# 函数的重载
使用 function 来定义好几个函数,传入不同个数的参数,会自动判断出实际返回的结果
function handleDataStr(x: string): string[]
function handleDataStr(x: number): number[]
function handleDataStr(x: any): any {
if (typeof x === 'string') {
return x.split('')
} else {
return x.toString().split('').map((item:any) => Number(item))
}
}
console.log(handleDataStr('abc'), '重载')
console.log(handleDataStr(123), '重载')
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11