函数是javaScript应用程序的基础。它帮助你实现抽象层,模拟类,信息隐藏和模块。在TypeScript里,虽然已经支持类,命名空间和模块,但函数仍然是主要的定义行为的地方。TypeScript为JavaScript函数添加了额外的功能,让我们可以更容易地使用
1.函数定义的方式
匿名函数
const makeMoney = function(a:string,b:string){
return a+b
}
let aa =makeMoney("你好","世界")
有名函数|命名函数|普通函数
function writeCode(hour : number,sleep:number) :number{
return hour;
}
let res1= writeCode(8,1);
console.log(`我今天写代码${res1}小时`);
箭头函数
const seeMeimei=(time : number ) : void=>{
console.log(`我每天看${time}小l时meimei`);}
const seeMeimei1=(time:number ) :void=>console.log(`我每天看${time}小时meimei` );
seeMeimei1(2);
seeMeimei(8)
//接口
type aaa = (nun:number,tew:number)=>number
const Myfun:aaa =(x:number,y:number)=>x+y+200+0.2
let my = Myfun(100,200)
console.log(my);
2.函数参数的处理
可选参数: 在TypeScript函数里,如果我们定义了参数,则我们必须传入这些参数,除非将这些参数设置为可选,可选参数使用问号标识?
//可选参数
const fun1:(a:number,b:number)=>number=(x:number,y:number)=>{
return x;
}
const func2=function(a : number,b?:number):number{
return a
}
func2(10);
func2(10,20);
func2( 10,undefined);
//let res= func3(100, 200);
const func3=function(a:number=1,b:number=2,C:number=3){
return a+b+C
}
let res= func3(103,200,400);
func3(); //600
func3(2,3);
console.log(res);
剩余参数: 有一种情况,我们不知道要向函数传入多少个参数,这时候我们就可以使用剩余参数来定义。剩余参数语法允许我们将一个不确定数量的参数作为一个数组传入。...args :any[]
//函数的剩余参数
const func4 = function (...args : any[]){
console.log(args);
}
func4(10,20 , 30,"赵四");
const func5 = function(a: number,b:number, ...args :any[]) {
console.log(a);
console.log(b);
console.log(args);
}
func5(10,20 , 30,"神髓","韩赵燕");
3.构造函数
TypeScript 也支持使用JavaScript内置的构造函数Function()来定义函数:
语法
var res = new Function ([arg1[,arg2[,...argN]],] functionBody)
参数说明:
.arg1,arg2,... argN:参数列表
functionBody:一个含有包括函数定义的JavaScript语句的字符串。
export default{} var my =new Function("b","a","return a*b") var ars =my(10,20) console.log(ars);
4函数重载
重载是方法名字相同,而参数不同,返回类型可以相同也可以不同。
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
参数类型不同:
function disp(string) : void; function disp(number) : void;
参数数量不同:
function disp(n1: number) : void; function disp(x : number , y : number) : void;
参数类型顺序不同:
function disp(n1: number ,s1:string) :void; function disp(s :string,n : number) : void;
//定义函数重载
function my(a:number,b:number):number
function my(a:string,b:string):string
function my(a:number,b:string):string
function my(a:string,b:number):string
//使用函数重载
function my(a:any,b:any):any{
console.log(a+b);
}
my(1,5)
my("张三",18)
my("张三","麻子")
my(2,"小李")
function myfun (a:any,b:number):any
function myfun (a:string,b:number):string
function myfun (a:any,b:any):any
function myfun (a:number):number
function myfun(a:any,b?:any):any{
a+b
}
myfun("ggg","mmm")