【问题标题】:refer to the return type of a function as a type in Typescript [duplicate]将函数的返回类型称为 Typescript 中的类型 [重复]
【发布时间】:2019-08-11 23:48:36
【问题描述】:

我想我已经知道这个问题的答案(即不可能),但我只是想确定一下,因为这将是一个很好的语言概念。

我发现我更喜欢编写像这样动态构建返回类型的代码:

function buildMyObject () {
    const c = "a string"
    return {
        a : 6,
        b  : c
    }
}

编译器确切知道返回类型的类型是什么,但是我可以在其他地方引用它吗,例如

function useMyObject(myObject : buildMyObject*) {
    console.log(myObject.a)
}

(星号表示我想使用返回类型)

看来我不得不重新编写一个“类型”、“接口”或“类”,这些都感觉像是多余的代码

【问题讨论】:

  • 1.如果你在重用它,它不是多余的...... 2.你可以定义一个类型为myObject: { a : number, b: string }
  • 但是,正如@Oram 所说,如果您拥有buildMyObject,我会亲自出于可读性/文档目的编写具体类型定义。但它根本不会影响代码行为。
  • 给你:function useMyObject(myObject: ReturnType<typeof buildMyObject>) ...
  • 太棒了!打字稿再次摇摆不定。我真的很感动

标签: typescript return-type type-systems


【解决方案1】:

简洁的utility-types 库包含一个ReturnType<T> 用于此目的。

编辑: ReturnType<T> 存在于标准库中,感谢Aleksey

【讨论】:

猜你喜欢
  • 2021-10-06
  • 1970-01-01
  • 2022-11-16
  • 1970-01-01
  • 2019-01-15
  • 1970-01-01
  • 1970-01-01
  • 2021-11-28
  • 2019-05-04
相关资源
最近更新 更多