函数定义
不带类型
function func1(x,y){
return x+y;
}
let func2 = function (x, y) {
return x + y;
}
带类型
function func3(x: number, y: number): number {
return x + y;
}
let func4 = function (x: number, y: number): number {
return x + y;
}
带完整类型
let func5: (x: number, y: number) => number = function (x: number, y: number):number {
return x + y;
}
定义带类型,函数不带类型
let func8 : (x:number)=>number = function(x){return 2};
注:定义类型的参数名,可以与定义函数的参数名不同,但是顺序与类型要一致
// func6的参数x相同,
// func7类型参数是x,函数参数是x_diff,参数名不同,但类型一致都是number,所以正确
let func6 : (x:number)=>number = function(x){return 2}; // 正确
let func7 : (x:number)=>number = function(x_diff){return 2}; // 正确
可选参数?
注:可选参数必须放在必传参数之后
function func( x:string, y?:string){}
默认参数=
function func(x:string = 'is x'){}
剩余参数...
function func(x:number, ...y:number[]) {
console.log(x,y)
}
func(1,2,3,4,5,6); // 输出:y===[2,3,4,5,6]
重载
根据参数类型不同,返回的类型也不同
// 定义类型列表
function func(x: number):number;
function func(x:string):object;
// 定义函数体
function func(x):any {
let result ;
switch (typeof x){
case 'number':result = x; break;
case 'string':result = {name:x}; break;
default:
result = undefined;
}
return result;
}
func(18); // 输出:18
func('WJ'); // 输出: {name:'WJ'}
网友评论