函数定义

在 JavaScript 中,有两种常见的定义函数的方式——函数声明(Function Declaration)和函数表达式(Function Expression):

// 函数声明(Function Declaration)
function sum(x, y) {
return x + y;
} // 函数表达式(Function Expression)
let mySum = function (x, y) {
return x + y;
};

函数声明

一个函数有输入和输出,要在 TypeScript 中对其进行约束,需要把输入和输出都考虑到,其中函数声明的类型定义较简单:

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

函数表达式

typescript中函数表达式(Function Expression)的完整写法是:

let mySum: (x: number, y: number) => number = function (x: number, y: number): number {
return x + y;
};

如果你在赋值语句的一边指定了类型但是另一边没有类型的话,TypeScript编译器会自动识别出类型(类型推断):

// mySum has the full function type
let mySum = function(x: number, y: number): number { return x + y; }; // The parameters `x` and `y` have the type number
let mySum: (baseValue: number, increment: number) => number =
function(x, y) { return x + y; };

这叫做“按上下文归类”,是类型推论的一种。 它帮助我们更好地为程序指定类型。

注意不要混淆了 TypeScript 中的 => 和 ES6 中的 =>。

在 TypeScript 的类型定义中,=> 用来表示函数的定义,左边是输入类型,需要用括号括起来,右边是输出类型。

在 ES6 中,=> 叫做箭头函数,应用十分广泛,可以参考 ES6 中的箭头函数。

可选参数及默认参数

// 可选参数
function createUserId(name: string, age?: number,
id: number): string {
return name + id;
} // 默认参数
function createUserId(name: string = 'Semlinker', age?: number,
id: number): string {
return name + id;
} 

剩余参数

function push(array, ...items) {
items.forEach(function(item) {
array.push(item);
});
} let a = [];
push(a, 1, 2, 3);

参考:

TypeScript 简介

函数的类型

TypeScript学习笔记—函数的更多相关文章

  1. Typescript 学习笔记三:函数

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

  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. TypeScript学习笔记(八):1.5版本之后的模块和命名空间

    我之前有写过TS1.5版本之前的“模块”的笔记:TypeScript学习笔记(七):模块 但是TS这里的模块和在ECMAScript 2015里的模块(即JS原生支持了模块的概念)概率出现了混淆,所以 ...

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

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

随机推荐

  1. oracle /plsql 计算平闰年天数函数

    --计算平闰年天数函数 CREATE OR REPLACE FUNCTION f_ping_run_nian (i_year NUMBER --定义函数名 ) RETURN VARCHAR2 IS - ...

  2. PHP学习笔记(8)验证码使用session对比

    知识点: 1. session获取其他页面的变量: (1)先在画验证码php里开启session_start(),$_SESSION['随便起名']=验证码字符串, (2)再在submit提交到act ...

  3. iOS swift 关于自定义表情键盘

    目录 输入框 键盘监听 键盘切换 表情装载 表情加载 表情输入 表情输出 表情显示 结束语 demo下载 demo图片: 输入框 为了让输入框能够随着用户输入内容变化自动变化高度,这里的输入框使用UI ...

  4. 跟着百度学PHP[15]-会话控制session的工作机制

    COOKIE和SESSION的两大区别: cookie是存储与客户端 session是存储与服务端 需要开启session的时候需要使用session_start开启,且session的开头不能拥有任 ...

  5. Shell面试题4:扫描网络内存活主机案例

    19.1.4企业Shell面试题4:扫描网络内存活主机案例 写一个Shell脚本,判断10.0.0.0/24网络里,当前在线的IP有哪些? [root@st153 tools]# cat check_ ...

  6. Java同步锁全息详解

    一 同步代码块 1.为了解决并发操作可能造成的异常,java的多线程支持引入了同步监视器来解决这个问题,使用同步监视器的通用方法就是同步代码块.其语法如下: synchronized(obj){ // ...

  7. 字符串的数字部分递增,如user00000001后面的数字部分递增+1

    使用存储过程方式 bengin declare@namevarchar(50) set@name=(selectmax(right('user00000001',8<8是从后往前数,从1开始&g ...

  8. [ACM] POJ 3740 Easy Finding (DFS)

    Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16202   Accepted: 4349 Description Give ...

  9. plsql数组、表和对象

    --数组DECLARE TYPE test_plsql_varray IS VARRAY(100) OF VARCHAR2(20); temp_varray1 test_PLSQL_VARRAY := ...

  10. ExtJs4学习(六)MVC中的Model

    Model定义的两种方式 第一种 Ext.define("User",{ extend:"Ext.data.Model", fields:[{ name:'us ...