1、介绍
函数是Javascript应用程序的基础。
2、 函数
和Javascript一样,Typescript可以创建有名函数和匿名函数。
// 函数声明式(具名函数)
function add(x,y){
return x+y;
}// 函数表达式(匿名函数)
let add = function(x,y){return x+y;}3、函数类型
1、为函数定义类型
// number 类型
function add(x:number,y:number):number{
return x+y;
}
add(1,2);// 3 2、书写完整函数类型
// 对比函数
let add:number = function(x:number,y:number):number{
return x+y;
} 函数类型包括两部分:参数类型和返回值类型。
完整函数类型两者都是需要的。
// 完整函数类型
let add:(baseValue:number,increment:number) = function(x:number,y:number):number{
return x+y;
} 3、推断函数类型
如果你在赋值语句的一边指定了类型但是另一边没有类型的话,
TypeScript编译器会自动识别出类型。
let add:number = function(x:number,y:number):number{
return x+y;
}
let add:(baseValue:number,increment:number) = function(x:number,y:number):number{
return x+y;
}4、可选参数和默认参数
Typescript里的每一个参数都是必须的。传递的参数和期望的参数个数必须一致
// 正常情况
function add(a:number,b:number,c:number):number{
return a+b+c;
}
add(1,2);// 错误,参数少了
add(12,312,3,211);// 错误,参数多了
add(1,2,3);// 6// 可选参数,参数c可选填
function add(a:number,b:number,c?:number):number{
if(!c){
return a+b;
}
return a+b+c;
}// 默认参数
function add(a:number,b:number=3):number{
return a+b;
}
add(1);//4
add(1,2);//3
add(1,undefined);//45、剩余参数
非必要参数,默认参数和可选参数都表示某个参数
剩余参数表示传过来的未知个数的参数
function add(...rest:number):number{
var s = 0;
rest.map(function(item){
s+=item;
})
return s;
}
add(1,2,3);//
6add(1);//16、this
1、this和箭头函数
在javascript中,this的值在函数被调用的时候才会指定。
let person = {
name:"wudikeji",
age: 32,
say:function(){
return function(){
console.log(this.name+","+this.age);
console.log(this)
}
}
}
let say = person.say();
say(); // undefined // window 我们在全局作用域下调用了person的方法say(),此时this已经指向了window(严格模式下是undefined)
2、this参数
let person = {
name:"wudikeji",
age: 32,
say:function(){
let _this = this;
return function(_this){
console.log(_this.name+","+_this.age);
console.log(_this)
}
}
}
let say = person.say();
say(person);
// wudikeji,32
// {name: "wudikeji", age: 32, say: ƒ}