# 四.函数类型

前言

函数相关类型的定义

# 1.声明方式

  • 直接声明
function sum(a: string, b: string): string {
  return a + b;
}
sum("a", "b");
1
2
3
4
  • type方式声明
type Sum = (a1: string, b1: string) => string;
let sum: Sum = (a: string, b: string) => {
  return a + b;
};
1
2
3
4
  • interface方式声明
interface Sum {
  (a: string, b: string): string
}
let sum: Sum = (a, b) => {
  return a + b;
};
1
2
3
4
5
6

# 2.可选参数

let sum = (a: string, b?: string): string => {
  return a + b;
};
sum("a"); //可选参数必须在其他参数的最后面
1
2
3
4

# 3.默认参数

let sum = (a: string, b: string = "b"): string => {
  return a + b;
};
sum("a"); //默认参数必须在其他参数的最后面
1
2
3
4

# 4.剩余参数

const sum = (...args: string[]): string => {
  return args.reduce((memo, current) => (memo += current), "");
};
sum("a", "b", "c", "d");
1
2
3
4

# 5.函数的重载

function toArray(value: number): number[];
function toArray(value: string): string[];
function toArray(value: number | string) {
  if (typeof value === "string") {
    return value.split("");
  } else {
    return value
      .toString()
      .split("")
      .map((item) => Number(item));
  }
}
toArray(123);
toArray("123");
1
2
3
4
5
6
7
8
9
10
11
12
13
14