- 函数的定义
- 可以指定参数的类型和返回值的类型
function hello(name:string):void { //接收参数为string类型,返回值为空
console.log('hello',name);
}
hello('lccc');
2.函数表达式
- 定义函数类型
通过关键字type
来定义函数类型
//定义一个GetUsernameFunction类型,它是一个函数,接收两个参数(类型均为字符串),返回一个字符串
type GetUsernameFunction = (x:string,y:string)=>string;
// 定义一个变量getUsername,他的类型是GetUsernameFunction
let getUsername:GetUsernameFunction = function(firstName,lastName){
return firstName + lastName;
}
// 如果getUsername的入参或者返回不满足GetUsernameFunction的定义的话,报错
- 可选参数
- 在TS中函数的形参和实参必须一样,不一样就要配置可选参数,而且必须是最后一个参数
function print(name:string,age?:number):void { //接收一个(age可不传)或两个参数,返回空。
console.log(name,age);
}
print('lccc');
- 默认参数
function ajax(url:string,method:string='GET') { //method默认为GET
console.log(url,method);
}
ajax('/users'); // /users GET
ajax('/users',"post"); // /users post
- 剩余参数
function sum(...numbers:number[]) { // 或者写成 ...numbers:Array<number>
return numbers.reduce((val,item)=>val+=item,0);
}
console.log(sum(1,2,3));
- 函数重载
- 在Java中的重载,指的是两个或者两个以上的同名函数,参数不一样
- 在TypeScript中,表现为给同一个函数提供多个函数类型定义
/*
* @params 参数同时为number
* @params 参数同时为string
*/
function abc(x:string, y:string):void; //以下两行都叫做函数签名
function abc(x:number, y:number):void;
// 签名后必须紧跟函数,之间除了注释,什么都不能有
function abc(a:any, b:any){
}
abc(1,2); //正确
abc("1","2"); //正确
abc(1,"2"); //报错, x,y只能同时为string或者number
网友评论