【问题标题】:Strange Typescript Return Types奇怪的打字稿返回类型
【发布时间】:2017-05-20 23:55:42
【问题描述】:

不是我最自豪的时刻,但对于我的一生,我无法理解这个示例代码的返回类型是什么。

myFunctionName(myParameter: string): {[key: string]: any} {
    // Some code
}

我尝试过搜索,但我真的没有正确搜索它的“语言”。

我理解“any”关键字的含义,并且我想我理解在方括号中定义了一个字符串类型的属性。但这是我所拥有的最好的。这里发生了什么?

【问题讨论】:

  • 它只是一个作为返回类型的 Javascript 对象
  • 出于好奇,我将该代码粘贴到 TypeScript Playground 并标记为无效。 A function whose declared type is neither 'void' or 'any' must return a value。您在哪里发现了该代码?
  • 嗨,Jason,这对我来说似乎是一个明智的错误信息。 “// Some code”注释代替了一些应该返回值的代码。因为在我的示例中我隐藏了这个细节,所以这段代码无法正确编译,因为函数需要返回一个值,但目前没有。

标签: angular typescript typescript-typings


【解决方案1】:

这里函数签名中的参数应该是一个“字符串”,函数的返回类型应该是一个对象,其键为字符串和任何类型的值。例如

return {
  'a' : {},
  'b' : 'string',
  'c' : 2,
  'd' : false,
}

【讨论】:

    【解决方案2】:

    它是一个带有字符串键和任何类型值的对象(或其他语言的映射)。

    【讨论】:

    • 我想我可以从示例函数的上下文中猜到这一点。您将如何在函数中使用/创建这样的对象?例如,给定一个名为 myMap 的“{[key: string]:any}”类型的对象,我将如何获得它的属性? myMap['example'] 还是 myMap.key['example']?
    • return {example: 'someValue'}` 和 myMap.examplemyMap['example']
    • 好的太棒了。最后一个问题,保证!这是否意味着本例中的“key”是 typescript 的关键字?
    • 使用什么名称似乎并不重要(key 或其他)。另见stackoverflow.com/a/39801356/217408(使用s)、github.com/Microsoft/TypeScript/pull/7029(使用x)。我还没有找到任何关于索引名称的含义的信息。
    • 好的,不用担心。除非在接下来的一个小时内提出了令人震惊的描述性答案,否则我会将其标记为正确。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 2020-06-29
    • 2021-10-28
    • 1970-01-01
    • 2021-09-18
    • 2022-01-12
    • 1970-01-01
    相关资源
    最近更新 更多