一、TypeScript中的函数

  • 函数的定义
  • 可选参数
  • 默认参数
  • 剩余参数
  • 函数重载
  • 箭头函数 es6

1、函数的定义
  1. 注:es5 定义函数的方法
  2. // 函数声明法
  3. function run() {
  4. return 'run';
  5. }
  6. // 匿名函数
  7. var run2 = function () {
  8. return 'run2';
  9. }
  10. 注:ts中定义函数的方法
  11. // 函数声明法
  12. function run(): string {
  13. return 'run';
  14. }
  15. // 匿名函数
  16. var fun2 = function (): number {
  17. return 123;
  18. }
  19. // ts中定义方法传参
  20. function getInfo(name: string, age: number): string {
  21. return `${name} --- ${age}`;
  22. }
  23. alert(getInfo('zhangsan', 20));
  24. // 没有返回值的方法
  25. function run(): void {
  26. console.log('run')
  27. }
  28. run();

2、方法可选参数
  • es5里面方法的实参和行参可以不一样,但是ts中必须一样,如果不一样就需要配置可选参数
    1. // age? 代表可传可不传
    2. 注意:可选参数必须配置到参数的最后面
    3. function getInfo(name: string, age?: number): string {
    4. if (age) {
    5. return `${name} --- ${age}`;
    6. } else {
    7. return `${name} ---年龄保密`;
    8. }
    9. }
    10. alert(getInfo('zhangsan'))

3、默认参数
  • es5里面没法设置默认参数,es6和ts中都可以设置默认参数
    1. function getInfo(name: string, age: number = 20): string {
    2. if (age) {
    3. return `${name} --- ${age}`;
    4. } else {
    5. return `${name} --- 年龄保密`;
    6. }
    7. }
    8. alert(getInfo('张三', 30));

4、剩余参数
  1. // 三点运算符 接受新参传过来的值
  2. function sum(...result: number[]): number {
  3. let sum = 0;
  4. for (let i = 0; i < result.length; i++) {
  5. sum += result[i];
  6. }
  7. return sum;
  8. }
  9. alert(sum(1, 2, 3, 4, 5, 6));
  10. // 另一种写法,按顺序赋值
  11. function sum(a: number, b: number, ...result: number[]): number {
  12. var sum = a + b;
  13. for (var i = 0; i < result.length; i++) {
  14. sum += result[i];
  15. }
  16. return sum;
  17. }
  18. alert(sum(1, 2, 3, 4, 5, 6));

5、ts函数重载
  • Java 中方法的重载:重载指的是两个或者两个以上同名函数,但它们的参数不一样,这时会出现函数重载的情况。
  • TypeScript 中的重载:通过为同一个函数提供多个函数类型定义来试下多种功能的目的。
  • ts为了兼容 es5 以及 es6 重载的写法和 java 中有区别。 ```typescript // es5中的重载,出现同名方法,下面的会替换上面的方法 function css(config){} function css(config,value){}

// ts中的重载,就是按条件选择 function getInfo(name:string):string; function getInfo(age:number):string; function getInfo(str:any):any{ if(typeof str === ‘string’){ return ‘我叫:’+str; }else{ return ‘我的年龄是’+str; } } alert(getInfo(‘张三’)); // 输出:我叫张三 alert(getInfo(20)); // 输出:我的年龄是20

  1. <a name="a5d05c1e"></a>
  2. ##### 6、es6箭头函数
  3. - this指向的问题,箭头函数里面的this指向上下文
  4. ```typescript
  5. // es5
  6. setTimeout(function () {
  7. alert('run')
  8. }, 1000)
  9. // es6
  10. setTimeout(() => {
  11. alert('run')
  12. }, 1000)