
\ TypeScript 中的ReturnType是一种与ParameterType非常相似的实用程序类型。它允许您获取函数的返回输出,并基于它构造一个类型。
\
ReturnType实用程序类型
ReturnType实用程序类型在特定函数的输出需要由另一个函数获取的情况下非常有用。在这种情况下,您可能会创建一个新的自定义类型,函数的输出会将其自身约束到该类型。
\ 让我们看一个愚蠢的例子来把它放到上下文中。下面,我们定义了一个新类型,它有两个属性a和b ,它们都是数字。然后一个函数将这个对象上的所有数字转换为字符串并返回一个新类型。我们定义了一个自定义类型,称为Data ,它期望a和b是字符串。
\
function sendData(a: number, b: number) { return { a: `${a}`, b: `${b}` } } type Data = { a: string, b: string } function consoleData(data:Data) { console.log(JSON.stringify(data)); } let stringifyNumbers = sendData(1, 2); consoleData(stringifyNumbers);
\ 由于consoleData期望数据的格式为Data ,如果a或b是数字,TypeScript 会抛出错误。我们的sendData函数通过将a和b转换为字符串来解决这个问题。
\ 这个设置的问题是,如果我们添加或更改了sendData或我们的输入数据,那么Data也需要更新。这没什么大不了的,但它很容易产生错误。因此,我们可以改为使用ReturnType来简化我们的类型声明。我们的Data类型可以这样写:
\
function sendData(a: number, b: number) { return { a: `${a}`, b: `${b}` } } type Data = ReturnType<typeof sendData> // The same as writing: // type Data = { // a: string, // b: string // }
\ 由于sendData以{ a: string, b: string }类型返回数据,因此Data成为该类型。这意味着我们不必维护sendData输出的两个副本——相反,我们在函数内部拥有一个副本,以及一个符合该副本的类型,从而简化了我们的代码。
也在这里发布
原文: https://hackernoon.com/get-the-return-type-of-a-function-in-typescript-using-returntype?source=rss