Typescript的函数

函数定义

  1. // 正常函数定义
  2. function run():string{
  3. return 'abc';
  4. }
  5. // 匿名函数定义
  6. var fun1 = function ():number{
  7. return 123;
  8. }
  9. // 没有返回值
  10. function run():void{
  11. console.log('abc');
  12. }

函数传参

  1. // 限制传入的参数的类型
  2. function getInfo(name:string, age:number):string {
  3. return `${name} is ${numebr}`;
  4. }
  5. // 匿名函数法
  6. var getInfo = function (name:string, age:number):string{
  7. return `${name} is ${numebr}`;
  8. }
  9. // 可选参数
  10. // ES5中方法的实参和形参可以不一样,但是在ts中必须一样。如果ts中需要可选参数,就需要进行配置
  11. // 变量名后面加问号,表示该参数可以传也可以传
  12. // 可选参数必须配置到参数的最后
  13. function getInfo(name:string, age?:number):string {
  14. if(age) {
  15. return `${name} is ${age}.`;
  16. } else {
  17. return `${name}`;
  18. }
  19. }
  20. // 参数默认值
  21. // 带默认值的参数,即使不加问号,也是可选参数
  22. // ES5不能设置默认参数,ES6和ts中可以设置默认参数
  23. // 参数类型后面加等号和默认值
  24. function getInfo(name:string, age:number=12):string{
  25. if(age) {
  26. return `${name} is ${age}`;
  27. } else {
  28. return `${name}`;
  29. }
  30. }
  31. // 剩余参数
  32. function sum(a:number, b:number, ...args:number[]):number{
  33. let temp = a + b;
  34. for(let i = 0; i < args.length; i++) {
  35. temp+= args[i];
  36. }
  37. return temp;
  38. }

函数重载

通过为同一个函数提供多个函数类型定义来实现多种功能的目的。

ts为了兼容es5、es6,重载的写法和java有区别。

  1. 参数数量相同时 ```typescript // 只声明函数,不实现函数体 function getInfo(name:string):string; function getInfo(age:number):number; // 重载函数实现 function getInfo(str:any):any { if(typeof str === ‘string’) {
    1. return `姓名: ${str}`;
    } else {
    1. return `年龄: ${str}`;
    } }

// 调用getInfo时,参数只能为string或number,不能为其他类型 alert(getInfo(123)); alert(getInfo(‘abc’)); // 传入布尔型参数会报错 alert(getInfo(true));

  1. 2.
  2. 参数数量不同时
  3. ```typescript
  4. function getInfo(name:string):string;
  5. function getInfo(name:string, age:number):string;
  6. // age为可选参数
  7. function getInfo(name:any, age?:any):any{
  8. if(age) {
  9. return `我是${name}, 年龄${age}`;
  10. } else {
  11. return `我是${name}`;
  12. }
  13. }