Typescript 学习笔记三:函数
目录:
- Typescript 学习笔记一:介绍、安装、编译
- Typescript 学习笔记二:数据类型
- Typescript 学习笔记三:函数
- Typescript 学习笔记四:回忆Es5 中的类
- Typescript 学习笔记五:类
- Typescript 学习笔记六:接口
- Typescript 学习笔记七:泛型
函数的定义
- 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 学习笔记三:函数的更多相关文章
- python学习笔记三 函数(基础篇)
函数 内置函数 常用的内建函数: type() 列出指定对象的类型 help() 能够提供详细的帮助信息 dir() 将对象的所有特性列出 vars() 列出当前模块的所有变量 file, ...
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记六:接口
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记五:类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记四:回忆ES5 中的类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记二:数据类型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记一:介绍、安装、编译
前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...
- ES6学习笔记<三> 生成器函数与yield
为什么要把这个内容拿出来单独做一篇学习笔记? 生成器函数比较重要,相对不是很容易理解,单独做一篇笔记详细聊一聊生成器函数. 标题为什么是生成器函数与yield? 生成器函数类似其他服务器端语音中的接口 ...
- MYSQL学习笔记三:日期和时间函数
MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...
随机推荐
- ISNUMERIC使用说明和BUG
ISNUMERIC ( expression )参数 expression 要计算的表达式.返回类型 int 备注当输入表达式的计算结果为有效的 numeric 数据类型时,ISNUMERIC 返回 ...
- 在网站中使用UEditor富文本编辑器
UEditor是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量.可定制.用户体验优秀等特点. 官网链接 进入到下载页面,选择相应的版本下载 这里我们使用ASP.NET开发,所以选择 ...
- const命令声明变量应注意的几点
对于复合类型的变量,变量名不指向数据,而是指向数据所在的地址.const命令只是保证变量名指向的地址不变,并不保证该地址的数据不变,所以将一个对象声明为常量必须非常小心. const person = ...
- 纯css loading动效
.loading {margin: 100px; width: 3px; height:3px; border-radius: 100%; / ...
- 项目总结19:layui实现表格渲染、表格搜索、数据获取
项目总结19:layui实现表格渲染.表格搜索.数据获取 1-参考资料:https://www.layui.com/demo/table/reload.html 2-本次总结的是layui的表格功能, ...
- python中sys.path--学习
本着下定义开头吧:python中import某个A模块时,首先会从python的内置模块中查找是否含义该模块的定义若未查询到会从sys.path对应的模块路径查询是否含有对应模块的定义,如果搜索完成依 ...
- [leetcode]53. Maximum Subarray最大子数组和
Given an integer array nums, find the contiguous subarray (containing at least one number) which has ...
- git 添加分支并与远程连接
今天由于项目需要,要改版,为了不影响当前网站,所以用分支来管理 首先,在本地添加分支dev git checkout -b dev 提交远程,让同事拉取这个分支,我是直接push了,推到远程. 同事在 ...
- day3-selenium的使用及
如果是python2的情况下需要设置: # _*_ coding:utf-8 _*_,这样的编码来保证输入中文在运行时不会报错,另外在中文的前边加上u保证编译时不会报错 from selenium i ...
- Linux module 添加到bashrc 和临时ifort编译器 以及python2和3的配置
第一步vim ~/.bashrc按键盘的i然后source /home/export/online1/bjpara/para/modules/scripts/cn-module.sh最后:x! bas ...