Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

使用 ReturnType 在 Typescript 中获取函数的返回类型

Posted on 2022-05-16

NpN8WH8v6CfA6j7dKAzuoiE5Lit2-dre3kgh.jpe

\ 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

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Bits about Money
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Elad Gil
  • Ellie Huxtable
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • Henrique Dias
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Lou Plummer
  • Matt Stoller
  • Mert Bulan
  • Mostly metrics
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • Thinking Deep & Wide
  • Tim Kellogg
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme