TypeScript的箭头函数

认识箭头函数

var fun1 = function(a:number, b:number=2):number{
    return a+b;
}

function fun2(a:number, b:number):number
{
    return a+b;
}

//使用ES6箭头函数语法定义函数,将原函数的“function”关键字和函数名都删掉,
//并使用“=>”连接参数列表和函数体。

var fun3 = (a:number, b:number):number=>{
    return a+b;
}

(a:number,b:number):number =>{
    return a+b;
}


//===================无参
var fun5 = function(){
    //do something.
}
var fun6 = ()=>{};

//=================单个参数
var fun7 = function(a:number){}
var fun8= (a:number) =>{}
//var fun9 = a => {}; ///js ok,但是ts下面会编译报错


//如果只有一个表达式,可以省略 "{}" 和 "return"
///如果包含多条语句,不能省略 "{}" 和 "return"
let fun9 = ()=> "hello";
let fun10 = ()=> {return ‘hello‘};
let fun11 = (a:number, b:number)=> a+b;
let fun12 = (a:number, b:number)=> {return a+b};
let fun13 = (a:number)=>{
    a=a+1; 
    return a;
};

// fun14 => {key:x};
//y => ({key:y});
(x:number) => ({key:x});

let fun15 = (x:number) => ({key:x});
console.dir(fun15);

let fun16 = (a:number)=>{
    a ++;
    return a;
}
fun16(100);
console.log(fun16(100));



//===================================
var Person = {
    firstName:"hello",
    lastName:"world",
    getFullName:function(firstName:string){    
        console.log(this);
        var first = this.firstName 
        
        var fn = (f:string)=>{
            console.log(this);
            return f+this.lastName;
        }

        return fn.call({firstName:‘hh‘}, firstName);
    }
}

console.log(Person.getFullName(‘hi‘)); /// hiworld


//===================================
var obj = {
    array:[1,2,3],
    sum:()=>{
        console.log("sum:");
        return (i:number,j:number)=>i+j;
    }
}
let fun17 = obj.sum();
//console.log(fun17(5,6));
console.log(obj.sum()(2,3)); // 5