什么是打字稿中函数返回类型的扩展

dagda1

我在打字稿中注意到了这种行为

interface Foo {
  x: () => { x: 'hello' };
}

const a: Foo = {
  x: () => {
    return {
      x: 'hello',
      excess: 3, // no error
    }
  },
}

我在github中发现了一些问题,指出这是由于函数返回类型的扩大。

函数返回类型扩展是什么意思?

提香·切尔尼科娃·德拉戈米尔

除非直接将值分配给指定类型的引用,否则不会进行多余的属性检查。因此,除非您直接将对象文字分配给参数或变量或返回显式键入的内容,否则不会收到错误。

在这种情况下,x函数是作为确定外部对象文字的类型的一部分而独立键入的,其返回类型被确定为{ x: 'hello', excess: 3 }然后,检查此功能与xin的兼容性,Foo并发现它是兼容的。没有检查对象文字直接分配给显式输入的引用。因此,不会触发多余的财产检查。

您在问题中发现的范围扩大并不会导致IMO没有错误。编译器使用上下文类型来确定某些类型。因此,例如,它将使用以下事实:将外部对象文字分配给Foo引用作为上下文,这将有助于例如确定参数类型,并且将停止{ x: "hello" }to的扩展{ x: string },但不会触发过多的属性检查。

并不是说这是它应该工作的方式,而且我已经看到很多围绕这个确切问题的问题,即从理论上由上下文确定其返回类型的函数中重新调整对象文字时,缺少多余的属性检查它被声明。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

覆盖打字稿中的函数返回类型

来自分类Dev

打字稿中的抽象函数返回类型

来自分类Dev

在打字稿中,返回void函数的函数的返回类型是什么?

来自分类Dev

打字稿返回分配函数的推断类型,但限制返回类型以扩展预定义类型

来自分类Dev

在打字稿中返回两种类型的函数

来自分类Dev

指定返回类型是打字稿中的构造函数或类

来自分类Dev

如何获取打字稿中异步函数的返回类型?

来自分类Dev

为什么打字稿需要函数类型中的名称?

来自分类Dev

打字稿为什么不能在函数中返回标题?

来自分类Dev

函数返回类型的打字稿错误

来自分类Dev

构造函数的打字稿类型是什么?

来自分类Dev

打字稿中的联合返回类型

来自分类Dev

打字稿中的通用类型返回

来自分类Dev

在函数的打字稿中声明承诺类型

来自分类Dev

打字稿中的类构造函数类型?

来自分类Dev

在打字稿函数中声明“ this”的类型?

来自分类Dev

打字稿中的重载函数类型

来自分类Dev

在函数类型声明中需要打字稿“=>”

来自分类Dev

打字稿类型描述在函数中的位置

来自分类Dev

如何从打字稿中的扩展功能返回此自类型

来自分类Dev

如何基于参数中的函数返回类型指定打字稿条件类型

来自分类Dev

异步函数不允许打字稿中两个诺言类型的返回类型

来自分类Dev

是否可以推断打字稿中映射类型的函数的返回类型?

来自分类Dev

打字稿中的记录类型是什么?

来自分类Dev

什么是打字稿中的可索引类型?

来自分类Dev

打字稿:如何从返回函数的输入参数推断高阶函数中的泛型类型

来自分类Dev

打字稿扩展原始类型

来自分类Dev

如何修复打字稿NodeJ中的eslint错误:“函数中缺少返回类型”

来自分类Dev

显式函数返回类型创建功能组件在打字稿中做出反应

Related 相关文章

  1. 1

    覆盖打字稿中的函数返回类型

  2. 2

    打字稿中的抽象函数返回类型

  3. 3

    在打字稿中,返回void函数的函数的返回类型是什么?

  4. 4

    打字稿返回分配函数的推断类型,但限制返回类型以扩展预定义类型

  5. 5

    在打字稿中返回两种类型的函数

  6. 6

    指定返回类型是打字稿中的构造函数或类

  7. 7

    如何获取打字稿中异步函数的返回类型?

  8. 8

    为什么打字稿需要函数类型中的名称?

  9. 9

    打字稿为什么不能在函数中返回标题?

  10. 10

    函数返回类型的打字稿错误

  11. 11

    构造函数的打字稿类型是什么?

  12. 12

    打字稿中的联合返回类型

  13. 13

    打字稿中的通用类型返回

  14. 14

    在函数的打字稿中声明承诺类型

  15. 15

    打字稿中的类构造函数类型?

  16. 16

    在打字稿函数中声明“ this”的类型?

  17. 17

    打字稿中的重载函数类型

  18. 18

    在函数类型声明中需要打字稿“=>”

  19. 19

    打字稿类型描述在函数中的位置

  20. 20

    如何从打字稿中的扩展功能返回此自类型

  21. 21

    如何基于参数中的函数返回类型指定打字稿条件类型

  22. 22

    异步函数不允许打字稿中两个诺言类型的返回类型

  23. 23

    是否可以推断打字稿中映射类型的函数的返回类型?

  24. 24

    打字稿中的记录类型是什么?

  25. 25

    什么是打字稿中的可索引类型?

  26. 26

    打字稿:如何从返回函数的输入参数推断高阶函数中的泛型类型

  27. 27

    打字稿扩展原始类型

  28. 28

    如何修复打字稿NodeJ中的eslint错误:“函数中缺少返回类型”

  29. 29

    显式函数返回类型创建功能组件在打字稿中做出反应

热门标签

归档