声明
函数声明(关键字)
function test() {console.log('Hello World');}
匿名函数(赋值给一个变量) ```javascript var test = function() { console.log(‘Hello World’); }
//等价于 function test() { console.log(‘Hello World’); }
Typescript语法1. 函数声明```typescriptfunction demo():string {return "Hello";}
- 匿名函数
let hello = function():number {return 0;}
传参
返回值
返回值设置类型,参数也指定类型 ```typescript function add(a:number , b:number):number { return a+b; } console.log(add(1 , 1)); //2 console.log(add(‘1’ , 1)); //报错,第一个函数是定义为number
function add1(a:number , b:string):string { return a+b; } console.log(add1(1 , ‘1’)); //11
<a name="4qU4k"></a>## 无返回值无返回值的函数定义,其返回值需要定义为void```typescriptfunction noreturn():void {console.log('1111');}
可选参数
一般情况下,定义函数的参数,在调用时必须传入参数的数量和定义时的参数数量一致
function add1(a:number , b:string):string {return a+b;}console.log(add1(1)); //报错,由于定义时需要接收两个参数,因此必须传入两个参数
有时候,部分参数不是必选的,设置为可选参数(在参数名后面加一个问号?),函数调用时就不需要传入
//可选参数function add2(a:number , b?:string):string {return '';}console.log(add2(1)); //b定义为可选参数,调用时可以不传console.log(add2(1,'a')); //也可以传参,类型必须对应上
默认参数
在函数定义时,给传入参数设置默认值,调用函数时不传参数,在函数执行中该参数取默认值
//默认参数function add3(a:number , b:string='Hello'):string {return a + ' - ' + b;}console.log(add3(1)); //1 - Hello , b定义为默认参数,调用时可以不传,默认为''Helloconsole.log(add3(1 , 'World')); //1 - World , b定义为默认参数,传入的参数值会覆盖默认值
剩余参数
剩余参数是指接收函数调用时,所传递的多余的参数,并保存到一个数组中(类型必须对应上)
function add4(a:string , ...str:string[]):void {console.log(str); //['2','3' , '4' , '5']}add4('1' , '2' , '3' , '4' , '5');//错误,因为剩余参数数组定义的是string类型,因此所有传入的剩余参数类型必须为string类型add4('1' , '2' , '3' , '4' , 5);//剩余参数当做可选参数使用function add5(...str:string[]):void {console.log(str);}add5(); //output:[] 不传,则数组为空add5(1,2); //output:[1,2]
重载
通过为同一个函数提供多个不同的返回类型来实现多种不同的逻辑,即同名方法定义不同的参数和返回值
function test(a:string):string;function test(a:number):number;function test(a:any):any {if(typeof a === 'string') {console.log('传入字符串');} else if(typeof a === 'number') {console.log('传入数字');}}test(1); //传入数字test('Hello'); //传入字符串test(true); //报错,没有定义boolean类型的参数
