返回

技术人员必备:揭秘Utility Types-Parameters&ReturnType上

前端

探寻Utility Types的奥秘

Utility Types是Typescript中的一个功能,它提供了许多操作类型以构造类型的能力。类型系统为我们提供了抽象和复用类型的能力,而Utility Types可以进一步拓展这种能力。在本文中,我们将聚焦Utility Types中令人着迷的Parameters和ReturnType,探索它们如何构造新的类型。

Parameters

Parameters类型用于获取一个函数的参数类型。它接收一个函数作为参数,返回一个元组类型,其中元素类型就是函数的参数类型。

例如,如果我们有一个函数:

function add(a: number, b: number): number {
  return a + b;
}

那么Parameters将返回一个元组类型:

[number, number]

这是因为add函数有两个参数,类型都是number。

ReturnType

ReturnType类型用于获取一个函数的返回值类型。它接收一个函数作为参数,返回函数的返回值类型。

例如,如果我们有一个函数:

function subtract(a: number, b: number): number {
  return a - b;
}

那么ReturnType将返回一个类型:

number

这是因为subtract函数返回一个number类型。

神奇的infer

infer用于从类型中推断类型。它可以用于构造复杂的类型,例如条件类型和泛型类型。

例如,我们有一个函数:

function max(a: number, b: number): number {
  if (a > b) {
    return a;
  } else {
    return b;
  }
}

我们可以使用infer关键字来推断max函数的返回值类型:

type MaxReturnType = ReturnType<typeof max>;

MaxReturnType的类型为:

number

这是因为max函数总是返回一个number类型。

结语

Utility Types是Typescript中的一个强大工具,它提供了许多操作类型以构造类型的能力。Parameters和ReturnType类型可以用于获取函数的参数类型和返回值类型,而infer关键字可以用于从类型中推断类型。

掌握Utility Types可以帮助我们编写更灵活、更强大的代码。赶快尝试一下吧!