1.最简单的案例
var getInfo():string{
return "Josie"
};
2.传参案例
var getInfo(name:string):string{
return My name is ${name}
};
调用: getInfo("Jocelyn")
若传可选参数
var getInfo(name:string,age?:number):string{
if(age){
return My name is ${name}, I am ${age} years old
} else{
return My name is ${name}, I am 8 years old
}
调用:getInfo('Jocelyn',12) 或者 getInfo('Jocelyn')
若有默认参数
var getInfo(name:string,age:number=3):string{
return My name is ${name}, I am ${age} years old
}
调用:getInfo('Jocelyn',12) 或者 getInfo('Jocelyn')
传递可替换,不传递,显示默认数据
3.剩余参数案例 三点运算符接收形参传递的值
function sum(...result: number[]): number {
var sum = 0;
for (let i = 0; i < result.length; i++) {
sum += result[i];
}
return sum;
}
调用:sum(1, 3, 5, 6, 8)
若此外还带有特地参数
function sum1(a: number, b: number, ...result: number[]): number {
var sum = a + b; //此处等于固定参数
for (let i = 0; i < result.length; i++) {
sum += result[i];
}
return sum;
}
sum1(1,3,5,6,8) ------a为1,b为 3, ab必须是number
// 函数的重载
// Java中方法的重载:重载是指两个或以上同名函数,但他们的参数不一样,这时会出现函数重载的情况
// typescript中的重载:通过为同一个函数提供多个函数类型定义来试下多种功能的目的。
// ts为了兼容es5及es6重载的写法和java中有区别
// es5中如果出现两个同名的函数,那么第二个函数会替换第一个函数
// ts中的重载
function getInfoA(name: string): string;
function getInfoA(name: number): number;
function getInfoA(str: any): any {
if (typeof str === "string") {
return "i am " + str;
} else {
return "i am " + str + ' years old.'
}
}
console.log(getInfoA('amy')) //结果----i am amy
console.log(getInfoA(22)) //结果----i am 22 years old.
function getInfoB(name: string): string;
function getInfoB(name: string, age: number): string;
function getInfoB(name: any, age?: any): any {
if (age) {
return "i am " + name + ', i am ' + age + ' years old';
} else {
return "i am " + name
}
}
// console.log(getInfoB('amy', 33)) //结果----i am amy, i am 33 years old
// console.log(getInfoB('emily')) //结果----i am emily.
// 结论:同样的方法,传入不同参数,得到不同的结果