Typescript的函数
函数定义
// 正常函数定义function run():string{return 'abc';}// 匿名函数定义var fun1 = function ():number{return 123;}// 没有返回值function run():void{console.log('abc');}
函数传参
// 限制传入的参数的类型function getInfo(name:string, age:number):string {return `${name} is ${numebr}`;}// 匿名函数法var getInfo = function (name:string, age:number):string{return `${name} is ${numebr}`;}// 可选参数// ES5中方法的实参和形参可以不一样,但是在ts中必须一样。如果ts中需要可选参数,就需要进行配置// 变量名后面加问号,表示该参数可以传也可以传// 可选参数必须配置到参数的最后function getInfo(name:string, age?:number):string {if(age) {return `${name} is ${age}.`;} else {return `${name}`;}}// 参数默认值// 带默认值的参数,即使不加问号,也是可选参数// ES5不能设置默认参数,ES6和ts中可以设置默认参数// 参数类型后面加等号和默认值function getInfo(name:string, age:number=12):string{if(age) {return `${name} is ${age}`;} else {return `${name}`;}}// 剩余参数function sum(a:number, b:number, ...args:number[]):number{let temp = a + b;for(let i = 0; i < args.length; i++) {temp+= args[i];}return temp;}
函数重载
通过为同一个函数提供多个函数类型定义来实现多种功能的目的。
ts为了兼容es5、es6,重载的写法和java有区别。
- 参数数量相同时
```typescript
// 只声明函数,不实现函数体
function getInfo(name:string):string;
function getInfo(age:number):number;
// 重载函数实现
function getInfo(str:any):any {
if(typeof str === ‘string’) {
} else {return `姓名: ${str}`;
} }return `年龄: ${str}`;
// 调用getInfo时,参数只能为string或number,不能为其他类型 alert(getInfo(123)); alert(getInfo(‘abc’)); // 传入布尔型参数会报错 alert(getInfo(true));
2.参数数量不同时```typescriptfunction getInfo(name:string):string;function getInfo(name:string, age:number):string;// age为可选参数function getInfo(name:any, age?:any):any{if(age) {return `我是${name}, 年龄${age}`;} else {return `我是${name}`;}}
