typeScrip(四)函数

  和 javascript 一样,typeScript 中的函数可以创建有名字的函数和匿名函数。

  

  函数类型

    function 函数,

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

     其中,x:number , y:number 定义的是参数的数据类型; 后面的那个定义的是函数的类型,如果函数没有返回值的话,一般默认返回的都是 void,因此为了书写的规范,最好就是即使没有返回值,也要指定一下函数类型是 void 而不要给留空;代码中返回 x + y + 0 是为了进行隐式的转换,

    完整的定义其实是应该这样的

let myAdd: (baseValue: number, increment: number) => number = function(x: number, y : number) : number { return x + y}

     但是这样蛮繁琐的,typeScript 中存下推断类型,typeScript 编译器会自动识别出类型

 

 

  推断类型

    如上,如果定义函数的时候一边定义的类型,另一边没有指定类型的话,编译器就会自动的进行识别,这就是类型推论中的一种:“按上下文归类”

let myAdd = function(x: number, y: number) : number { return x + y + 0 }

 

    

  可选参数和默认参数

    在 typeScript 中,传递的函数参数个数必须和期望的参数个数是一样的,即实参和形参必须一致; 在 typeScript 中每个函数参数都是必须的,这并不是说不能传递 null 或者 undefined 作为参数,二十编译器检查用户是够为每个参数都传入了值。

    在 javaScript 中,参数是可传也可不传的,也就是说是可选的,如果没有传值的话,他的值就是 undefined ;在 typeScript 中如果想要实现这个效果,即参数是可选填的,只用我们在定义的时候在形参的边上使用 “?” 就可以实现;可选参数必须跟在必填参数的后边。在 typeScript 中也是可以传递默认参数的,如下这样 x 就和 2 共享数据类型

            function add(x: 2, y?:number): number { return x + y }

 

 

 

  剩余参数

    在 javaScript 中,我们可以通过 arguments 来访问所有的参数,但是在 typeSript 中,不支持,但是我们可以 “...” 来将所有的参数放在一个变量里,例如:

            function add(x: number, ...y: number[]) {
               let sum:number = 0
               y.map(item => { sum += item })
               return  x +sum
            }

 

 

 

  this 和 箭头函数

    

posted @ 2019-07-23 13:51  mumengchun  阅读(203)  评论(0编辑  收藏  举报