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)

 

posted @ 2024-11-21 15:15  史洲宇  阅读(4)  评论(0编辑  收藏  举报