TypeScript之函数
1.函数声明
与javascript一样,ts的函数声明也分为两种:函数声明,函数表达式
1)函数声明:
function fn(age:number):string{
return `age is ${age}`
}
ps:与javascript类似,只是对参数以及返回值的类型加了限制
2)函数表达式
let fn:(age:number)=>string = function(age:number):string{}
注意:
这里的=>和箭头函数的符号没有关系,(**)=>**意思是:这是一个函数类型,括号内说明了参数的个数和类型箭头后面的说明了返回值的类型。
函数表达式的赋值不是必须的,可以先声明再赋值,类型说明也可以只写一边,另一边编译器会自动识别
2.参数相关
在参数后面跟上?表示为可选参数:
function fn( name:string, age?:number ):void{}
注意:可选参数必须在必选参数的后面。
默认参数同es6中的默认参数写法:
function fn( name:string, age = 18):void{}
注:默认值可不放在最后,但是要想使用默认值,必须在调用的时候在对应位置传入undefined。
2)剩余参数
function buildName(firstName: string, ...restOfName: string[]) { return firstName + " " + restOfName.join(" "); }
类似es6的...这里也可以用参数末尾的...some string[]数组来收集多余的参数,只不过这里加了类型限定
3.重载
function fn(param: number): number;
function fn(param: string): string;
function fn(param: any): any{};
写法上,函数头相同(输入输出的类型限定不同),前面的函数只有函数头,没有函数体,最后一个函数才声明函数体,
调用时,输入的参数类型符合哪个函数头的类型,函数返回值就会被赋予该函数头中定义的类型,这样作可以让类型检测更可靠。
注意:之前的所有的函数头的类型,必须是最后一个函数的类型的子集
4.关于this
并没有搞明白官方文档讲this是干嘛,没看懂,暂留
TypeScript之函数的更多相关文章
- TypeScript 中函数的理解?与 JavaScript 函数的区别?
一.是什么 函数是JavaScript 应用程序的基础,帮助我们实现抽象层.模拟类.信息隐藏和模块 在TypeScript 里,虽然已经支持类.命名空间和模块,但函数仍然是主要定义行为的方式,Type ...
- TypeScript Function(函数)
在JavaScript中,函数是构成任何应用程序的基础块.通过函数,你得以实现建立抽象层.模仿类.信息隐藏和模块化.在TypeScript中,虽然已经存在类和模块化,但是函数依旧在如何去"处 ...
- TypeScript入门-函数
▓▓▓▓▓▓ 大致介绍 TypeScript为JavaScript函数添加了额外的功能,让我们可以更容易地使用.TypeScript中的函数也包括JavaScript中最常见的两种函数 functio ...
- TypeScript 之 函数
https://m.runoob.com/manual/gitbook/TypeScript/_book/doc/handbook/Functions.html 为函数定义类型 为函数添加类型: fu ...
- typescript - 3.函数
(1)函数的定义 ## 函数声明法 // function run():string{ // return 'run'; // } //错误写法,返回类型错误 // function run():st ...
- 《前端之路》- TypeScript(二) 函数篇
目录 一.定义函数方法 二.定义函数传参 三.可选传参 四.默认传参 五.传递剩余参数 六.函数重载 七.箭头函数 八.总结 一.定义函数方法 在 es5 中定时函数的方法有 命名函数和函数表达式(匿 ...
- TypeScript 素描 - 函数
/* 函数和javaScript并没有太大差别,只是增加了额外的功能,使函数有 更为强大的功能而且更易用使用 */ //现在支持函数的参数指定类型,在前面的博文中大家应该已经看到 //还可以指定函数的 ...
- typescript的函数
1:默认参数(传入值会覆盖默认参数,不传值也行) function getinfo(name:string,age:number=20):string{ return `${name}---${age ...
- TypeScript中将函数中的局部变量“导出”的方法
首先是在模块a.js中声明一个可导出(export)的数据结构,例如: export class ModelInfo{ id: string; name:string; } 其次是在模块b中声明可导出 ...
随机推荐
- [RN] React Native 下列表 FlatList 和 SectionList
1.FlatList FlatList组件用于显示一个垂直的滚动列表,其中的元素之间结构近似而仅数据不同. FlatList更适于长列表数据,且元素个数可以增删.和ScrollView不同的是,Fla ...
- 原创:Spark中GraphX图运算pregel详解
由于本人文字表达能力不足,还是多多以代码形式表述,首先展示测试代码,然后解释: package com.txq.spark.test import org.apache.spark.graphx.ut ...
- USACO 奶牛抗议 Generic Cow Protests
USACO 奶牛抗议 Generic Cow Protests Description 约翰家的N头奶牛聚集在一起,排成一列,正在进行一项抗议活动.第i头奶牛的理智度 为Ai,Ai可能是负数.约翰希望 ...
- ICEM-结构化网格interface的做法
原视频下载地址:http://yunpan.cn/cLHTCfRVNmihZ 访问密码 2ead
- 关于SkyApm测试部署。
这个是skyapm的github : https://github.com/SkyAPM/SkyAPM-dotnet 它依赖于skywalking . 我是用docker去部署的.因为这样我的系统会干 ...
- 2019暑假Java学习笔记(一)
目录 基础语法(上) HelloWorld 变量 常量 数据类型 整数 浮点数 char类型 boolean类型 String 计算字符串长度 字符串比较 字符串连接 charAt()方法 字符串常用 ...
- linux core 性能
apt-get install lrzsz apt-get install vim apt-get install -y net-tools apt-get install -y procps htt ...
- Java基础 try...catch...catch 使用Exception,去捕获其子类异常
JDK :OpenJDK-11 OS :CentOS 7.6.1810 IDE :Eclipse 2019‑03 typesetting :Markdown code ...
- RAID技术全解图解-RAID0、RAID1、RAID5、RAID100【转】
图文并茂 RAID 技术全解 – RAID0.RAID1.RAID5.RAID100…… RAID 技术相信大家都有接触过,尤其是服务器运维人员,RAID 概念很多,有时候会概念混淆.这篇文章为网络转 ...
- pycharm安装pyinstaller将pygame打包成exe
首先,使用pycharm自带的下载包工具,File-Settings-Project Interpreter,如图: 安装完成后,发现安装到了Python根目录下,我的在C:\python34\Scr ...