三、typscript(函数的类型)

本文介绍了TypeScript中的函数类型,包括函数声明、函数表达式、接口定义函数形状、可选参数、默认值、剩余参数以及函数重载的概念及其使用方法。通过实例详细展示了如何在TypeScript中进行类型安全的函数设计。
摘要由CSDN通过智能技术生成

二、typscript(数组的类型、类数组、函数的类型)-CSDN博客

三、函数的类型

3.1、函数的表示方法——函数声明

function sum(x: number, y: number): number {
    return x + y;
}
// sum(1, 2) 成功
// sum(1, 2, 3) 编译错误,因为参数不能多也不能少



// 函数表达式
let mySum: (x: number, y: number) => number = function (x: number, y: number): number {
    return x + y;
};

注意:在 TS 的类型定义中,=> 用来表示函数的定义,左边是输入类型,需要用括号括起来,右边是输出类型。而在 ES6 中,=> 叫做箭头函数。

3.2、用接口定义函数形状

interface SearchFunc {
    (source: string, subString: string): boolean;
}

let mySearch: SearchFunc;
mySearch = function(source: string, subString: string) {
    return source.search(subString) !== -1;
}

3.3、可选参数

// 1.1、可选参数:在参数名后面加上“ ?”
function buildName(firstName: sting, lastName?: string){
    if(lastName){
        return firstName + '' + lastName;
    }else{
        return firstName;
    }
}

//注意:可选参数必须放在必需参数后面,换句话说,可选参数后面不允许再出现必需参数(可选参
数必须在最后)
let tomcat = buildName('Tom', 'Cat')
let tom = buildName('Tom')



// 1.2、参数默认值
function push(firstName: string, lastName: string = '123'){
    return firstName + '' + lastName
}

let tomcat = buildName('Tom', 'Cat');
let tom = buildName('Tom')//因为默认值的关系push方法也可以返回TomCat



// 1.3、剩余参数:用 ... 表示剩余参数,它其实是一个数组
function push(array:any[], ...items: any[]){
    items.forEach(function(item){
        array.push(item)
    })
}

let a:any[] = [];
push(a,1,2,3)

3.4、函数的重载:有些函数可以接受不同类型或不同个数的参数,并且根据参数的不同,会有不同的函数行为。这种根据参数类型不同,执行不同逻辑的行为,称为函数重载(function overload)

reverse('abc') // 'cba'
reverse([1, 2, 3]) // [3, 2, 1]
// 上例函数根据参数类型的不同,分别执行对应的逻辑(说明reverse方法内部有处理字符串和数组
的两套逻辑),这就叫“函数重载”。

TypeScript 对于“函数重载”的类型声明方法是,逐一定义每一种情况的类型

function reverse(str:string):string;
function reverse(arr:any[]):any[];

上例中,分别对函数reverse()的两种参数情况,给予了类型声明。但是后面还必须对函数
reverse()给予完整的类型声明;具体如下:

function reverse(str:string):string;
function reverse(arr:any[]):any[];
function reverse(
  stringOrArray:string|any[]
):string|any[] {
  if (typeof stringOrArray === 'string')
    return stringOrArray.split('').reverse().join('');
  else
    return stringOrArray.slice().reverse();
}
// 上例中,前两行类型声明列举了重载的各种情况。
// 第三行是函数本身的类型声明,它必须与前面已有的重载声明兼容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值