定义函数类型(规定函数参数及函数返回值的类型,若函数没有返回值,则返回类型为null)

function add(x: number, y: number): number {
return x + y
}

推断类型(ts自动识别类型(按上下文归类))

function add(x: number, y: number) {
return x + y
}
//ts会自动识别出返回类型为number

可选参数,默认参数,剩余参数

  • 可选参数(参数名旁使用 ?实现可选参数的功能,可选参数放在必填参数之后)
function buildName(firstName: string, lastName?: string) {
if (lastName)
return firstName + " " + lastName;
else
return firstName;
} let result1 = buildName("Bob"); // Bob
let result3 = buildName("Bob", "Adams"); // Bob Adams
  • 默认参数(默认参数可传值也可不传,一般默认参数在必须参数之后,但也可以定义在默认参数之前,但此时必须明确传入undefined以获取默认值)
function buildName(firstName: string, lastName: string = "Smith") {
return firstName + " " + lastName;
} let result1 = buildName("Bob"); // Bob Smith
let result3 = buildName("Bob", "Adams"); // Bob Adams
function buildName(firstName: string = "Mr", lastName: string ) {
return firstName + " " + lastName;
} let result1 = buildName("Bob","Adams"); // Bob Adams
let result2 = buildName("Bob"); //error: Expected 2 arguments, but got 1.
let result3 = buildName(undefined,"Smith") //Mr Smith
  • 剩余参数(当参数个数不确定时)
function buildName(firstName: string, ...restOfName: string[]) {
return firstName + " " + restOfName.join(" ");
} let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");
console.log(employeeName) //Joseph Samuel Lucas MacKinzie

this和箭头函数(传统函数的this作用域是在函数调用时确定,但箭头函数的this作用域在创建时就已经确定)

  • 传统函数
let myobj = {
person:["Bob","Fred","Smith"],
myFn:function(){
return this.person
}
} let test = myobj.myFn;
console.log(test()) //undefined
  • 箭头函数
let myobj = {
person: ["Bob", "Fred", "Smith"],
myFn: function () {
return () => {
return this.person
}
}
} let test = myobj.myFn();
console.log(test()) //[ 'Bob', 'Fred', 'Smith' ]

TS学习之函数的更多相关文章

  1. TS学习随笔(五)->函数

    这篇文章我们来看一下TS里面的函数 函数声明 在 JavaScript 中,有两种常见的定义函数的方式——函数声明(Function Declaration)和函数表达式(Function Expre ...

  2. JavaScript学习09 函数本质及Function对象深入探索

    JavaScript学习09 函数本质及Function对象深入探索 在JavaScript中,函数function就是对象. JS中没有方法重载 在JavaScript中,没有方法(函数)重载的概念 ...

  3. C++学习之函数指针

     C++学习之函数指针          和数据项类似,函数也有地址,函数的地址是存储在机器语言代码的内存的开始地址.通常,这些地址对用户而言,不重要也没什么用处,但对程序而言,它却很有用. 一.函数 ...

  4. Javascript学习5 - 函数

    原文:Javascript学习5 - 函数 在Javascript中,函数和对象是交织在一起的.有些函数的特性与对象相关联.这一点的内容在第六部分会讨论到. 这一部分主要讨论函数与其它比较熟悉的语言( ...

  5. 《python基础教程(第二版)》学习笔记 函数(第6章)

    <python基础教程(第二版)>学习笔记 函数(第6章) 创建函数:def function_name(params):  block  return values 记录函数:def f ...

  6. python学习8—函数之高阶函数与内置函数

    python学习8—函数之高阶函数与内置函数 1. 高阶函数 a. map()函数 对第二个输入的参数进行第一个输入的参数指定的操作.map()函数的返回值是一个迭代器,只可以迭代一次,迭代过后会被释 ...

  7. python学习7—函数定义、参数、递归、作用域、匿名函数以及函数式编程

    python学习7—函数定义.参数.递归.作用域.匿名函数以及函数式编程 1. 函数定义 def test(x) # discription y = 2 * x return y 返回一个值,则返回原 ...

  8. TS学习随笔(七)->声明文件

    now我们来看一看TS怎么声明文件, 在JS里面我们经常会使用各种第三方类库,引入方式也不太相同,常见的就是在HTML中通过script标签引入,然后就可以使用全局变量$或者jQuery了 我们通常这 ...

  9. TS学习随笔(一)->安装和基本数据类型

    去年学过一段时间的TS,但由于在工作中不常用.就生疏了,最近项目要求用TS,那我就再回去搞搞TS,写一篇记录一下自己学习TS的进度以及TS知识点 首先,关于TS的定义我就不在这描述了,想看百度一下你就 ...

随机推荐

  1. php 验证邮箱的方法

    在开发 web系统时,经常在注册或者登陆或者邮箱保护的时候会需要验证邮箱,现在我来分享邮箱验证的一些小tips.(多说一句,现在基本用手机号注册登录是趋势了,匹配手机号我后面再讲了). 1.最开始也是 ...

  2. What is MEAN?

    MEAN.JS is a full-stack JavaScript open-source solution, which provides a solid starting point for M ...

  3. RZ11 系统配置参数

    SAP系统配置参数详解[转] SAP 系统参数设置 path: /usr/sap/PRD/SYS/profile profile: PRD_DVEBMGS00_sapapp 如果您想查看所有的参数及当 ...

  4. ALV调用的几个函数

     转 ALV的调用主要由以下几个标准函数实现,所有函数的输入输出参数必须大写,否则系统会出现异常中止,相关函数如下: 1)REUSE_ALV_FIENDCATALOG_MERGE:根据内表结构返回FI ...

  5. Oracle分页总汇

    Oracle分页总汇 select * from (select a.*,rownum row_num from (select * from mytable t order by t.id desc ...

  6. 每天一个Linux命令(23)chmod命令

        chmod命令用来变更文件或目录的权限. 在UNIX系统家族里,文件或目录权限的控制分别以读取.写入.执行3种一般权限来区分,另有3种特殊权限可供运用.用户可以使用chmod指令去变更文件与目 ...

  7. JavaScript在执行代码之前会校验代码,声明变量提前至当前作用域最前面。

    var name = 123; function getName(){ console.log(name); } getName(); 输出123 -------------------------- ...

  8. springmvc的优化

    二.springmvc的工作机制 在容器初始化时会建立所有url和controller的对应关系,保存到Map<url,controller>中.tomcat启动时会通知spring初始化 ...

  9. 重置 oschina 的CSS

    嗯, 目前只是改了一下OSChina的几个主要DIV宽度而以,还是很粗糙, 以后会慢慢改进的. ---------------------------------------------------- ...

  10. Hibernate学习---第十四节:hibernate之session线程安全

    1.hibernate.cfg.xml 文件中添加如下代码开启线程安全: <property name="hibernate.current_session_context_class ...