中文网:https://www.tslang.cn/

官网:http://www.typescriptlang.org/

目录:

函数的定义

  • ES5 函数定义:函数声明、匿名函数、传参
// 函数声明
function fn1 () {
return 123;
}
fn1(); // 调用 // 匿名函数
let fn2 = function () {
console.log(456);
}
fn2(); // 传参
function fn3 (name, age) {
return `姓名:${name},年龄:${age}`;
}
fn3('张三', 25);
  • ts 函数定义:函数声明、匿名函数、传参
// 函数声明
function fn1 ():number { // number 是函数返回值类型,没有返回值为 void
return 123;
}
fn1(); // 匿名函数
let fn2 = function ():void {
console.log(456);
}
fn2(); // 传参
function fn3 (name:string, age:number):string {
return `姓名:${name},年龄:${age}`;
}
fn3('张三', 25);

可选参数

ES5 里面方法的实参和行参可以不一样,但是 ts 中必须一样,如果不一样就需要配置可选参数。

注意:可选参数必须配置到参数的最后面

function getInfo (name:string, age?:number):string { // age 为可选参数
if (age) {
return `姓名:${name},年龄:${age}`;
} else {
return `姓名:${name},年龄:保密`;
}
}
console.log(getInfo('张三', 23));
console.log(getInfo('李四'));
// 错误的写法
function getInfo (name?:string, age:number):string { // name 为可选参数
if (name) {
return `姓名:${name},年龄:${age}`;
} else {
return `姓名:不知道,年龄:${age}`;
}
}
console.log(getInfo('李四', 23));

默认参数

ES5 里面没法设置默认参数,ES6 和 ts 中都可以设置默认参数。

function getInfo (name:string, age:number=25):string { // age 默认为25
if (age) {
return `姓名:${name},年龄:${age}`;
} else {
return `姓名:${name},年龄:保密`;
}
}
console.log(getInfo('张三', 23)); // 姓名:张三,年龄:23
console.log(getInfo('李四')); // 姓名:李四,年龄:25

剩余参数

ES6 中的三点运算符

function sum (a:number, b:number, ...nums:number[]):number {
let sum = a + b;
nums.forEach((n) => {
sum += n;
});
return sum;
}
console.log(sum(1, 2, 3, 4, 5, 6)); // 21

函数重载

java 中方法的重载:重载指的是两个或者两个以上同名函数,但它们的参数不一样,这时会出现函数重载的情况。

Typescript 中的重载:通过为同一个函数提供多个函数类型定义来实现多种功能的目的。

ts 为了兼容 ES5 以及 ES6 重载的写法和 java 中有区别。

ES5 中出现同名方法,下面的会替换上面的方法。

function getInfo (name) {

}
function getInfo (name, age) { }

ts 中的重载

// 单个参数,不同类型
function getInfo (name:string):string;
function getInfo (age:number):string;
function getInfo (str:any):any {
if (typeof str === 'string') {
return `姓名:${str}`;
} else {
return `年龄:${str}`;
}
}
getInfo('张三');
getInfo(25);
getInfo(true); // 错误的写法
// 多个参数,可选参数
function getInfo (name:string):string;
function getInfo (name:string, age:number):string;
function getInfo (name:string, age?:number):string {
if (age) {
return `姓名:${str},年龄:${str}`;
} else {
return `姓名:${str}`;
}
}
getInfo('张三');
getInfo(25); // 错误
getInfo('李四', 26);

箭头函数

同 ES6 中一样,修复 this 指向的问题,箭头函数里面的 this 指向上下文,即外层第一个不为箭头函数的 this。

Typescript 学习笔记三:函数的更多相关文章

  1. python学习笔记三 函数(基础篇)

    函数 内置函数 常用的内建函数: type()  列出指定对象的类型 help()  能够提供详细的帮助信息 dir()    将对象的所有特性列出 vars()  列出当前模块的所有变量 file, ...

  2. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  3. Typescript 学习笔记六:接口

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  4. Typescript 学习笔记五:类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  5. Typescript 学习笔记四:回忆ES5 中的类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  6. Typescript 学习笔记二:数据类型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  7. Typescript 学习笔记一:介绍、安装、编译

    前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...

  8. ES6学习笔记<三> 生成器函数与yield

    为什么要把这个内容拿出来单独做一篇学习笔记? 生成器函数比较重要,相对不是很容易理解,单独做一篇笔记详细聊一聊生成器函数. 标题为什么是生成器函数与yield? 生成器函数类似其他服务器端语音中的接口 ...

  9. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

随机推荐

  1. js方法用来获取路径传参上所带的参数

    //js方法用来获取路径传参上所带的参数 function GetQueryString(param) { var reg = new RegExp("(^|&)" + p ...

  2. (转)Word插入图片显示不全怎么办

    https://jingyan.baidu.com/article/e73e26c0c0081c24adb6a73d.html 现在告诉大家解决办法. 方法一: A.单击选中图片,然后在“开始”选项卡 ...

  3. k8s之配置flanneld网络

    Flannel是Overlay网络的一种,也是将源数据包封装在另一种网络包里面进行路由转发和通信,目前已经支持UDP.VXLAN.AWS VPC和GCE路由等数据转发方式. Flannel通过给每台宿 ...

  4. spark streaming之三 rdd,job的动态生成以及动态调度

    前面一篇讲到了,DAG静态模板的生成.那么spark streaming会在每一个batch时间一到,就会根据DAG所形成的逻辑以及物理依赖链(dependencies)动态生成RDD以及由这些RDD ...

  5. Vue框架H5商城类项目商品详情点击返回弹出推荐商品弹窗的实现方案

    需求场景: 非推荐商品详情页返回的时候弹出弹窗推荐商品,点击弹窗按钮可以直接访问推荐商品: 只有直接进入商品详情页返回才会弹出推荐商品弹窗: 每个用户访问只能弹一次(除非清除缓存). 需求分析: 1. ...

  6. 项目总结19:layui实现表格渲染、表格搜索、数据获取

    项目总结19:layui实现表格渲染.表格搜索.数据获取 1-参考资料:https://www.layui.com/demo/table/reload.html 2-本次总结的是layui的表格功能, ...

  7. linux下安装python,Django,虚拟环境

    linux下python安装步骤: 1.下载python3源码包 wget https://www.python.org/ftp/python/3.6.6/Python-3.6.7.tgz 2.下载p ...

  8. Solidity合约间的调用-1

    当调用其它合约的函数时,可以通过选项.value(),和.gas()来分别指定,要发送的ether量(以wei为单位),和gas值. pragma solidity ^; contract InfoF ...

  9. tab选项卡实例

    之前也见了不少的tab选项卡,但是下面这个选项卡是一个页面中有多个时互不影响的. <head> <meta charset="utf-8"> <met ...

  10. 教你轻松快速学会用Calibre TXT转MOBI

    教你轻松快速学会TXT转为有目录的MOBI###授人以渔,lllll5500制作### 需使用软件按先后顺序如下:一.排版助手 官网http://www.gidot.net/typesetter/二. ...