美文网首页
typeScript学习02

typeScript学习02

作者: 404_accc | 来源:发表于2020-05-11 11:52 被阅读0次

    typescript中的函数

    1. ts中函数定义
    // 函数声明
    function run(): string {    // 函数必须返回是string类型,(定义返回什么类型必须返回对应的类型,返回不对应类型ts报错)
      return 'jsbin'
    }
    
    // 匿名函数
    let runOne = function(): string {
      return 'jsbin'
    }
    
    1. ts中函数的传参
    function runTwo(name: string, age: number): string {  // 形参定义的什么类型数据,函数调用传递的实参必须是对应类型,不然ts报错
      return 'jsbin'
    }
    
    // 没有返回值的方法
    function runVoid(): void {  // 没有返回值使用void
      console.log('jsbin')
    }
    
    1. ts中的函数的可选参数(js中函数的形参和实参可以不一致,但是在ts中函数的形参和实参一般来说必须一直,如果实际情况需要则需要配置)
    function runThree(name:string, age?:number): string{  // 可选参数必须下载形参的最后面
      return 'jsbin'
    }
    
    runThree()  // An argument for 'name' was not provided
    runThree('jsbin')   // 这样是可以的,name是必传,age可选项
    
    1. ts中函数的默认参数(es6之前的javaScript无法设置默认参数,ts,es6可以设置)
    function runFour(name:string = 'jsbin', age?:number): string{
      return 'jsbin'
    }
    
    1. ts中函数的剩余参数
    function sum(a: number,b: number,c: number,d: number): number {  // 如果参数过多,这样写起来不优雅
      return a + b + c + d
    }
    
    function sumCount(...result:number[]): number{     // 这样写起来比较优雅
      let sum = 0
      for(let i=0; i<result.length; i++) {
        sum = sum + result[i]
      }
      return sum
    }
    sumCount(1,2,4,6,)
    
    function sumCountOne(x:number, ...result:number[]): number{     // 这样写起来比较优雅
      let sum = 0 + x
      for(let i=0; i<result.length; i++) {
        sum = sum + result[i]
      }
      return sum
    }
    sumCountOne(2,8,43434,434)   // 其中实参2对应的形参就是x,剩余参数...result解析
    
    1. ts中函数的重载,在js中没有重载,最后的一个方法会将前面的同名方法全部覆盖,ts中通过同一个函数提供多个函数类型定义来显示不同功能的目的。
    function getUserInfo(name: string):string;
    function getUserInfo(age: number):number;
    
    function getUserInfo(str:any): any{
      if(typeof str === 'string') {
        return 'my name is ' + str
      }else{
        return str + ''
      }
    }
    
    console.log(getUserInfo(30))   // 正确
    console.log(getUserInfo('jsbin'))   // 正确
    
    // 下面语句调用错误   因为在在函数重载的选项中没有找到对应类型 
    // No overload matches this call.Overload 1 of 2, '(name: string): string', gave the following error.类型“true”的参数不能赋给类型“string”的参数。  
    // Overload 2 of 2, '(age: number): number', gave the following error.类型“true”的参数不能赋给类型“number”的参数
    console.log(getUserInfo(true))
    

    相关文章

      网友评论

          本文标题:typeScript学习02

          本文链接:https://www.haomeiwen.com/subject/hjxunhtx.html