TypeScript文档地址: Function

声明方式

:::info 在我们声明函数的时候,要关注的主要两点:约定输入、约定输出
意思就是规定入参的类型,以及返回值的类型 :::

示例

  1. // 约定输入, 约定输出
  2. // 格式: (参数: type , 参数:type) : 返回类型
  3. function add(x:number, y:number):number{
  4. return x+y // 必须是number
  5. }
  6. add(1,2) // 参数一定要一致,多或少都不行
  7. // 可选参数
  8. // z是可选参数,注意的是,可选参数一定要放在参数的后面
  9. // 否则会报错
  10. function add(x:number, y:number, z?:number):number{
  11. if(typeof z === 'number'){
  12. return x + y + z
  13. } else {
  14. return x + y
  15. }
  16. }
  17. // 函数表达式如何声明
  18. const add = (x:number, y:number, z?:number):number => {
  19. if(typeof z === 'number'){
  20. return x + y + z
  21. } else {
  22. return x + y
  23. }
  24. }
  25. // 我们会发现这时的add的类型是:
  26. // 这个时候这个函数本身也是一个类型,add是这个函数类型。
  27. // const add: (x: number, y: number, z?: number) => number
  28. // 所以,以下赋值会报错
  29. // 不能将类型“(x: number, y: number, z?: number) => number”分配给类型“string”。
  30. let add2: string = add;
  31. // 正确的赋值方法,注意,在ts中,凡是在:后面的都代表类型
  32. // 需要注意的是这个 => 符号,并不是代表es6的箭头函数
  33. // 而是ts中声明函数类型返回值的方法。
  34. let add2: (x:number, y:number, z?:number) => number = add;
  35. // 但是这样写很累赘
  36. // 所以,我们可以使用interface去描述函数类型
  37. interface ISum{
  38. (x:number, y:number, z?:number):number
  39. }
  40. let add3: ISum = add;