09 # 函数相关知识点梳理

简介: 09 # 函数相关知识点梳理

如何去定义一个函数

4种方式:

function addFunc1(x:number, y:number) {
    return x + y;
}
let addFunc2: (x:number, y:number) => number;
type addFunc3 = (x:number, y:number) => number;
interface addFunc4 {
    (x:number, y:number): number;
}


ts 对函数参数类型、个数有什么要求

形参实参必须一一对应。

addFunc1(1) // 应有 2 个参数,但获得 1 个。未提供 "y" 的自变量。


如果要省略可使用可选参数:

function addFunc5(x:number, y?:number) {
    return y ? x + y : x;
}
addFunc5(1)


注意:必选参数不能位于可选参数后。

// 下面就会报错:必选参数不能位于可选参数后。
function addFunc5(x:number, y?:number, z: number) {
    return y ? x + y + z: x + z;
}


为参数赋值默认值:必选参数之前,默认参数是不能省略的,必须明确的传入 undefined 来获取其默认值,必选参数之后的默认值可以不用传。

function addFunc6(x:number, y = 0, z:number, q = 1) {
    return x + y + z + q;
}
addFunc6(1, undefined, 3)


参数不确定可以使用剩余参数

function addFunc7(x:number, ...rest: number[]) {
    return x + rest.reduce((pre, cur) => pre + cur);
}
console.log(addFunc7(1, 2, 3, 4, 5));


函数重载

先定义一系列名称相同的函数声明,声明列表定义完成后,需在类型最宽泛版本中实现这个重载

function addFunc8(...rest: number[]): number;
function addFunc8(...rest: string[]): string;
function addFunc8(...rest: any[]): any {
    let first = rest[0];
    if (typeof first === 'number') {
        return rest.reduce((pre, cur) => pre + cur);
    }
    if (typeof first === 'string') {
        return rest.join('');
    }
}
console.log(addFunc8(1, 2));
console.log(addFunc8("kaimo", '313'));


目录
相关文章
|
3月前
|
算法 测试技术 持续交付
面试的流程,面试的重点
本文介绍了面试流程及各轮面试的重点。通常面试为1-5轮,首轮关注技术实力与项目经验,次轮深入考察技术细节,第三轮侧重项目协调、创新及价值观等软性问题,如职业规划和沟通能力。面试题分为开放型(如项目经验、解决问题思路)和非开放型(如技术细节、手撕算法),需提前准备。测试类问题涉及自动化测试、持续集成等实际应用。
|
8月前
|
搜索推荐 算法 网络协议
如何做好IT类的技术面试?
如何做好IT类的技术面试?
81 0
|
9月前
|
算法 程序员
程序员必知:XGB算法梳理
程序员必知:XGB算法梳理
53 0
|
10月前
|
设计模式 监控 安全
Java并发编程详解-知识点梳理
Java并发编程详解-知识点梳理
155 2
|
10月前
|
前端开发 JavaScript 程序员
如何做好IT类的技术面试
如何做好IT类的技术面试
|
前端开发 NoSQL 数据库
项目重点知识点详解
项目重点知识点详解
|
存储 人工智能 安全
[总结] C++ 知识点 《一》基础篇
[总结] C++ 知识点 《一》基础篇
|
SQL JSON 前端开发
【知识点梳理】
【知识点梳理】
|
前端开发
前端学习笔记202303学习笔记第五天-梳理项目的基本结构1
前端学习笔记202303学习笔记第五天-梳理项目的基本结构1
82 0
|
存储 缓存 移动开发
前端面试题梳理
前端面试题梳理
224 0

热门文章

最新文章