TS实践小结

149 阅读1分钟

处理参数数量和类型不固定的函数

  • 仅仅是类型不固定,可以使用泛型[普通函数和箭头函数泛型]
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`
}
}