学习ts(三)函数

定义函数

定义函数、函数默认值、可选参数

// 定义函数 参数类型直接写在括号中,函数返回值类型写在括号后面
function add(a: number, b: number): number {
    return a + b
}
// 箭头函数
const add1 = (a: number, b: number): number => {
    return a + b
}
// 函数默认值
const add2 = (a: number = 10, b: number = 20): number => {
    return a + b
}
// 可选参数
const add3 = (a: number, b?: number): number => {
    return a + (b ? b : 0)
}

// console.log(add(1,2))
// console.log(add1(1,2))
// console.log(add2())
console.log(add3(1))

ts中可以定义this的类型,必须是第一个参数定义this类型

interface Obj {
    arr: number[],
    add: (this: Obj, num: number) => void
}
// ts中可以定义this的类型,必须是第一个参数定义this类型
let obj: Obj = {
    arr: [1, 2, 3],
    add(this: Obj, num: number) {
        // add:function add(this: Obj, num: number) {
        this.arr.push(num)
    }
}
obj.add(4)
console.log(obj)

函数重载

函数重在是指在同一个作用域内,有多个函数名相同,但是形参列表不同(参数类型不同,参数个数不同,参数顺序不同),返回值无关,我们将这种叫做重载函数。

let arr: number[] = [1, 2, 3]
function findNum(): number[] //没有传入参数是查询全部
function findNum(index: number): number[] //传入数字参数参数是查询是否存在,存在返回
function findNum(numArr: number[]): number[] //传入数组是数组继续添加数据,返回数组

function findNum(ids?: number | number[]): number[] {
    if (typeof ids == 'number') {
        return arr.filter(i => i == ids)
    } else if (Array.isArray(ids)) {
        arr.push(...ids)
        return arr
    } else {
        return arr
    }
}

console.log(findNum(2))
console.log(findNum())
console.log(findNum([4,5,6]))

你可能感兴趣的:(typeScript,学习,前端,typescript)