ts中的函数

55 阅读1分钟
// 3.函数

// 函数的类型
// 1)对函数的参数进行类型校验
// 2)对函数的返回值进行类型检验
// 3)对函数本身来校验

// 函数声明
function sum1(x: number, y: string): string { // 括号后面的是返回值类型
    return x + y;
}

// 函数表达式
// 1)可以自动根据当前等号右边的内容推断左边的类型
const sum2 = (x: number, y: number): number => {
    return x + y
}
// 2)可以指定类型,赋予一个可以兼容这个类型的函数
type IFn = (a: number, b: number) => number
const sum3: IFn = (x, y) => {
    return x + y
}
// 3)函数会自动推倒返回值类型
const sum4 = (x: number, y: number) => {
    return x + y
}

// 三种方式都有使用

// js里面支持的方法全部支持

// ? 表示参数可以传递或者不传递,但是y的类型 可以是number | undefined
// 默认值用 = 号
// 可以使用剩余运算符
// js中默认值和可选参数不能一起使用
const sum5 = (x: number, y?: number, ...args: number[]): number => {
    return x + (y as number);
}

sum5(123, 1, 2, 3, 4);

// 函数重载 

// 123 => [1,2,3]
// 'abc' => ['a','b','c']

// number => string[]
// string => number[]

// 一个方法,根据参数的不同实现不同的功能 , ts目的就是根据不同的参数返回类型
function toArray(value:string):string[]
function toArray(value:number):number[]
function toArray(value:string | number) { // 重载方法在真实方法的上面
    if(typeof value == 'string'){
        return value.split('');
    }else{
        return value.toString().split('').map(item=>Number(item));
    }
}
let r = toArray('abc');
console.log(r)