ts function

324 阅读1分钟
  • 定义函数
function sumAdd(arg1: number, arg2: number): number {
   return arg1 + arg2
}
const sumAdd1 = (ar1: number, ar2: number): number => ar1 + ar2
  • 传入回调函数并约束函数
let sum: (x: number, y: number) => number;
sum = (arg1: number, arg2: number) => arg1 + arg2;
let arg3 = 3;
sum = (arg1: number, arg2: number) => arg1 + arg2 + arg3;
  • 接口定义函数
interface IFunc {
   (x: number, y: number): number;
}
  • 使用类型别名定义函数
type Ifunc1 = (x: number, y: number) => number;
let func2: Ifunc1;
func2 = (n1: number, n2: number) => n1 + n2;
console.log(func2(2, 6));
let func3;
func3 = (a1: number, a2: number, a3?: number) => a1 + a2 + (a3 ? a3 : 0);
console.log(func3(2, 3));
  • 可选参数必需在必选参数后边
type Ifunc2 = (a1: number, a2: number, a3?: number) => number;
let func4: Ifunc2;
func4 = (a: number, b: number) => a + b;
func4 = (a: number, b: number, z?: number) => a + b + (z ? z : 0);
console.log(func4(1, 9));

  • 默认参数
let func5 = (x: number, y: number = 4) => x + y
console.log(func5(3, 8));
  • 剩余参数,参数个数不确定,可以是任意个
const handleData = (g1: number, ...gs: number[]) => {
   console.log(g1, ...gs);
}
handleData(3, 3, 4, 5, 6, 6);
  • 函数重载 根据传入不同类型的参数,返回不同类型的结果
function handleData1(x: number): number[];
function handleData1(x: string): string[];
function handleData1(x: any): any {
    if (typeof x === "string") {
        return x.split("");
    } else if (typeof x === "number") {
        return x.toString().split("").map((item) => Number(item));
    }
}
console.log(handleData1(321),handleData1('qwe'))