处理参数数量和类型不固定的函数
- 仅仅是类型不固定,可以使用泛型[普通函数和箭头函数泛型]
function identity<T>(arg: T):T {
return arg;
}
function identity <T, U>(value: T, message: U) : T {
console.log(message);
return value;
}
console.log(identity<Number, string>(68, "Semlinker"));
//
箭头函数定义泛型
const foo1=<T, >(x: T): T => x
const foo2: <T>(x: T) => T = x => x
const foo3 = <T extends {name: ''}>(x: T): T => x
函数重载
function greet(name: string): string;
function greet(age: number): string;
function greet(value: any): string {
if (typeof value === "string") {
return `Hello, ${value}`;
} else if (typeof value === "number") {
return `You are ${value} years old`;
}
}
对于箭头函数,虽然他们不直接支持函数重载,但我们可以通过定义函数签名的方式来实现类似的效果。
type GreetFunction = {
(name : string) : string;
(age: number): string;
}
const greet : GreetFunction = (value: any): string=> {
if(typeof value ==="string") {
return `Hello, ${value}`
}else if(typeof value === "number"){
return `You are ${number} years old`
}
}