TypeScript基础入门 - 函数 - 可选参数和默认参数
转载
TypeScript基础入门 - 函数 - 可选参数和默认参数
项目实践仓库
https://github.com/durban89/typescript_demo.git tag: 1.2.0
为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能直接运行看到输出的结果。
npm install -D ts-node
后面自己在练习的时候可以这样使用
npx ts-node 脚本路径
函数
可选参数和默认参数
TypeScript里的每个函数参数都是必须的。 这不是指不能传递 null或undefined作为参数,而是说编译器检查用户是否为每个参数都传入了值。 编译器还会假设只有这些参数会被传递进函数。 简短地说,传递给一个函数的参数个数必须与函数期望的参数个数一致。如下实例演示
function buildName(firstName: string, lastName: string) { return firstName + ' ' + lastName } // 错误演示 buildName("firstName") // 错误演示 buildName("firstName", "lastName", "lastName") // 正确演示 buildName("firstName", "lastName")
JavaScript里,每个参数都是可选的,可传可不传。 没传参的时候,它的值就是undefined。 在TypeScript里我们可以在参数名旁使用 ?实现可选参数的功能。 比如,我们想让last name是可选的:
function buildName(firstName: string, lastName?: string) { return firstName + ' ' + lastName } // 错误演示 buildName("firstName", "lastName", "lastName") // 正确演示 buildName("firstName") // 正确演示 buildName("firstName", "lastName")
可选参数必须跟在必须参数后面。 如果上例我们想让first name是可选的,那么就必须调整它们的位置,把first name放在后面。在TypeScript里,我们也可以为参数提供一个默认值当用户没有传递这个参数或传递的值是undefined时。 它们叫做有默认初始化值的参数。 让我们修改上例,把last name的默认值设置为"Smith"。
function buildName(firstName: string, lastName="Smith") { return firstName + ' ' + lastName } // 正确演示 buildName("A") // 正确演示 buildName("A", undefined) // 错误演示 buildName("firstName", "lastName", "lastName") // 正确演示 buildName("firstName", "lastName")
在所有必须参数后面的带默认初始化的参数都是可选的,与可选参数一样,在调用函数的时候可以省略。 也就是说可选参数与末尾的默认参数共享参数类型。
function buildName(firstName: string, lastName="Smith") { return firstName + ' ' + lastName }
和
function buildName(firstName: string, lastName?: string) { return firstName + ' ' + lastName }
共享同样的类型(firstName: string, lastName?: string) => string。 默认参数的默认值消失了,只保留了它是一个可选参数的信息。与普通可选参数不同的是,带默认值的参数不需要放在必须参数的后面。 如果带默认值的参数出现在必须参数前面,用户必须明确的传入 undefined值来获得默认值。 例如,我们重写最后一个例子,让 firstName是带默认值的参数:
function buildName(firstName="Durban", lastName: string) { return firstName + ' ' + lastName } // 错误演示 buildName("A") // 正确演示 buildName(undefined, "A") // 错误演示 buildName("firstName", "lastName", "lastName") // 正确演示 buildName("firstName", "lastName")
本实例结束实践项目地址
https://github.com/durban89/typescript_demo.git tag: 1.2.1

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
阿里巴巴 java 1+2+3+hr面
阿里数据技术与产品部门 1面+2面+3面面筋 1面(48分钟):基础+项目 自我介绍,项目介绍,遇到的最大困难是什么?怎么解决的?你觉得你能怎么优化这个项目? 1)讲一下JVM 2)讲一下JVM的分代回收以及具体算法 3)将一下JVM的垃圾收集器,G1和CMS有啥区别? 4)讲一下一个变量从产生到结束所经历的过程,讲一下字符串常量的过程? 5)将一下线程安全问题产生的原因? 6)讲一下乐观锁和悲观锁 7)乐观锁是怎么保证一致性的 8)Integer和int有啥区别,integer中有哪些特殊的函数? 9)讲一下数据库的隔离等级 10)说一下MVCC 11)说一聚簇索引和非聚簇索引的有什么不同 2面(1h):主要聊项目,基础问得不多 主要怼项目,你做过哪些项目,用过哪些技术?你为什么读研?了解哪些框架?你觉得对你技术提升最高的是哪一件事情,提升了你哪一方面的技术? 1)讲一下Spring AOP和IOC的底层实现 2)说一下hashcode的作用?HashMap的底层实现?HashMap和HashTable的区别 3)说一下concurrentHashMap和hashTable在性能上的...
- 下一篇
Java定时任务解决方案
版权声明:本文为博主原创文章,未经博主允许不得转载。博客源地址为zhixiang.org.cn https://blog.csdn.net/myFirstCN/article/details/81750829 很多项目中都会遇到需要定时任务的情况,本篇文章就结合了Spring中以及SpringBoot、SpringCloud中定时任务的解决方案。 在Spring中使用定时器 用SpringBoot比较多的同学可能都会觉得Spring的xml配置确实比较麻烦,如果想在Spring中使用定时器的话其实是必须使用xml配置文件的。 引入task约束 1 2 http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd 开启注解 1 2 <task:scheduler id="Scheduler" pool-size="10"/> <task:annotation-driven scheduler="Scheduler" pro...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装