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.
参数数量不同时
```typescript
function 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}`;
}
}