TypeScript 个人笔记 (二)

100 阅读1分钟

函数

函数的定义

可以指定参数的类型和返回值的类型

function list(age: number, name: string): void {
    console.log(age, name);
}
list(13, 'zhangsan')

函数表达式

定义函数类型

type Fun = (x: number, y: number) => number
let constFun: Fun = function (a, b) {
    return a + b
}

可选参数

在 TS 中函数的形参和实参必须一样,不一样就要配置可选参数,而且必须是最后一个参数

function sole(name: string, age?: number) {
    console.log(name, age);

}
console.log(sole('华安'));

默认参数


function permiss(url: string, method: string = 'POST') {
    console.log(url, method);

}
console.log(permiss('/munuList'));

剩余参数

function sum(...number: number[]) {
    return number.reduce((val, item) =>  //val:上次调用函数的返回值 item:当前元素 0 初始值
  
        (val += item), 0
    )
}
console.log(sum(1, 2, 3))

函数重载

函数重载或方法重载是使用相同名称和不同参数数量或类型创建多个方法的一种能力。
在 TypeScript 中,表现为给同一个函数提供多个函数类型定义

let obj: any = {};
function attr(val: string): void;
function attr(val: number): void;
function attr(val: any): void {
  if (typeof val === "string") {
    obj.name = val;
  } else {
    obj.age = val;
  }
}
attr("秋香");
attr(9);
// attr(true); // The call would have succeeded against this implementation, but implementation signatures of overloads are not externally visible.
console.log(obj);

函数重载真正执行的是同名函数最后定义的函数体 在最后一个函数体定义之前全都属于函数类型定义
不能写具体的函数实现方法 只能定义类型