【TypeScript】函数

函数

函数的参数返回值是可以定义的类型的

// 命名函数
function fun(x: number, y: number): number {
    return x + y;
}

// 匿名函数
let lo = function (msg: string): void { // viod 表示没有返回值
    console.log('匿名函数')
}

可选参数 & 默认参数

可选参数?关键字

function add(x: number, y: number, flag?: boolean): number {
    if (flag){
        return x + y;
    }else{
        return x - y;
    }
}
console.log(add(5,3,true)); // 8 
console.log(add(5,3)); // 2

默认参数

function add(x: number, y: number = 3, flag?: boolean): number {
    if (flag){
        return x + y;
    }else{
        return x - y;
    }
}
console.log(add(5,3)); // 2
console.log(add(5)); // 2

剩余参数

PythonJava 里叫 不定长参数

function add(x: number, ...args: number[]): number {
    console.log(x, args) // 5  [4, 3, 2, 1]
    args.forEach(num => {
        x += num;
    });
    return x;
}
console.log(add(5, 4, 3, 2, 1)); // 15

函数重载

Java 的重载,是 函数名一样,参数列表不一样,而 TypeScript有点不一样

函数参数定义有类型断言声明重载规范传入参数的类型

// 重载函数声明。相对于 规范传入参数的类型
function add(x: string, y: string): string;
function add(x: number, y: number): number;

function add(x: number | string, y: number | string): number | string {
    if (typeof x === "number" && typeof y === "number") {
        return x + y; // 数字类型 相加
    }
    if (typeof x === "string" && typeof y === "string") {
        return x + ' + ' + y; // 字符串 拼接
    }
}

console.log(add('**', '**')) // ** + **
console.log(add(3, 5)) // 8
发表评论 / Comment

用心评论~