TypeScript学习笔记--函数function

函数 function
在ts中,函数是主要的定义 行为的地方。 TypeScript为JavaScript函数添加了额外的功能,让咱们能够更容易地使用。css

声明方式

在 JavaScript 中,有两种常见的定义函数的方式——函数声明和函数表达式git

函数声明

一个函数有输入和输出,要在 TypeScript 中对其进行约束,须要把输入和输出都考虑到。github

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

函数表达式

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

这二者是等价的,上面的代码只对等号右侧的匿名函数进行了类型定义,而等号左边的 mySum,是经过赋值操做进行类型推论而推断出来的typescript

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

注意:数组

  • 输入多余的(或者少于要求的)参数,是不被容许的,会报错
  • 在 TypeScript 的类型定义中,=> 用来表示函数的定义,左边是输入类型,须要用括号括起来,右边是输出类型。

可选参数

与接口中的可选属性相似,咱们用 ? 表示可选的参数。须要注意的是,可选参数必须接在必需参数后面。换句话说,可选参数后面不容许再出现必需参数了tomcat

let myName :(firstName:string,lastName?:string)=>void = function(firstName:string,lastName?:string):void{
  if (lastName) {
    console.log(firstName + ' ' + lastName);
  } else {
    console.log(firstName);
  }
}

默认参数

能够按照日常的js给参数添加默认值,TypeScript 会将添加了默认值的参数识别为可选参数,同时这样也不受‘可选参数必须接在必需参数后面’的限制了。编辑器

function buildName(firstName: string = 'Tom', lastName: string) {
  return firstName + ' ' + lastName;
}
let tomcat = buildName('Tom', 'Cat');
let cat = buildName(undefined, 'Cat');

剩余参数

在js中,arguments能够表明函数的全部的参数,能够在函数内获取全部参数。ES6 中,可使用 ...rest 的方式获取函数中的剩余参数(rest 参数)。一样的,ts也是支持...rest的方式。函数

function push(array: any[], ...items: any[]) {
  items.forEach(function(item) {
      array.push(item);
  });
}

let a_function:number[] = [1,2,3];
push(a_function, 1, 2, 3);

剩余参数自己就是个数组,也须要进行类型声明。ui

函数重载

什么是函数重载:两个以上的函数,具备相同的函数名,可是形参的个数或者类型不一样,编译器根据实参和形参的类型及个数的最佳匹配,自动肯定调用哪个函数,这就是函数的重载。this

function reverse(x: number): number;
function reverse(x: string): string;
function reverse(x: any): any{
  if (typeof x === 'number') {
      return Number(x.toString().split('').reverse().join(''));
  } else if (typeof x === 'string') {
      return x.split('').reverse().join('');
  }
}

上例中,咱们重复定义了屡次函数 reverse,前几回都是函数定义,最后一次是函数实现。在编辑器的代码提示中,能够正确的看到前两个提示。
注意,TypeScript 会优先从最前面的函数定义开始匹配,因此多个函数定义若是有包含关系,须要优先把精确的定义写在前面。

this

在js中this能够经过上下文得知this的指向,在ts中,若不代表类型则容易报错。

  • 在普通的函数里,能够在参数列表里最前面添加this:any,指定假的参数,不影响
  • 在class中,能够在参数列表中this能够指定当前的class类

总结

emmm,开头的一句话:TypeScript为JavaScript函数添加了额外的功能,让咱们能够更容易地使用,还有规范
我把笔记和例子放到GitHub里了,如须要能够去看看,有什么不对的地方,欢迎指正,你们一块儿进步加油。

参考文献

TypeScript 入门教程
TypeScript 中文手册

相关文章
相关标签/搜索