typeScript 函数扩展(六)
如何定义一个函数,一般情况下我们是这么定义的
function testFn(a: number, b: number): number { return a + b } testFn(1, 2) const testfn1 = (a: number, b: number): number => { return a + b } testfn1(2,3)
常规的函数声明一般就是这两种,但是这里并没有涉及到函数的可选参数以及默认值相关的用法,那么下面我们来介绍一下
定义函数的可选参数
// 这里有个注意的点,可选参数需要写到最后,不要写到必选参数的前面,会报错的 function testFn2(age: number, name?: string): string { return name ? name + age : 'unknow' + age } console.log('t1 :>> ', testFn2(7, 'momo')); console.log('t2 :>> ', testFn2(7));
如何定义函数的默认值呢
function testFn3(name:string = 'small momo',age?:number):string{ return name ? name + age : 'unknow' + age }
那么如何通过接口来定义函数呢
//定义参数 num 和 num2 :后面定义返回值的类型 interface Add { (num: number, num2: number): number } const fn: Add = (num: number, num2: number): number => { return num + num2 } fn(5, 5) interface User { name: string; age: number; } function getUserInfo(user: User): User { return user }
如何定义剩余函数参数
const fn = (array:number[],...items:any[]):any[] => { console.log(array,items) return items } let a:number[] = [1,2,3] fn(a,'4','5','6')
函数重载
重载是方法名字相同,而参数不同,返回类型可以相同也可以不同。
如果参数类型不同,则参数类型应设置为 any。
参数数量不同你可以将不同的参数设置为可选。
function fn(params: number): void function fn(params: string, params2: number): void function fn(params: any, params2?: any): void { console.log(params) console.log(params2) } fn(123) fn('123',456)