Typescript" Anonymous"的正确名称是什么?类型定义?

时间:2018-06-17 18:11:18

标签: typescript

我正在查看这行代码options?: { name?: string, async?: boolean }。类型{ name?: string, async?: boolean }的正确用语是什么?它看起来像一个" Anonymous类" Java中的定义,但我猜它被称为其他东西......

2 个答案:

答案 0 :(得分:4)

根据Typescript语言规范,这些被称为Object Type Literals

  

对象类型文字通过指定集合来定义对象类型   静态地认为存在于实例中的成员   类型。可以使用interface为对象类型文字指定名称   声明,但在其他方面是匿名的。

     

对象类型:
  { TypeBody <子>选择 }

     

TypeBody:
   TypeMemberList ; <子>选择
   TypeMemberList , <子>选择

     

TypeMemberList:
   TypeMember
   TypeMemberList ; TypeMember
   TypeMemberList , TypeMember

     

TypeMember:
   PropertySignature
   CallSignature
   ConstructSignature
   IndexSignature
   MethodSignature

答案 1 :(得分:-2)

匿名类型是正确的:

https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#3.8.10

  

类型查询对于捕获由各种构造(如对象文字,函数声明和命名空间声明)生成的匿名类型非常有用。

---

原始答案:

我不确定,但这里有一些我称之为的事情:

  • 未命名类型
  • Adhoc Type
  • 匿名类型

注意:

Typescript使用duck typing,因此可以使用具有匹配类型成员的替代类型描述。

另一个词:像鸭子一样呱呱叫的对象可以被称为鸭子,无论它最初被声明为什么类型(或者它是否有一个命名类型声明或者只是一个像你的例子那样的特殊声明)。

所以如果你有一个类型:

type Options = {name?:string, async?: boolean};

问题中的对象属于同一类型(就类型系统而言),即使它从未被声明为具有此类型。

但是,在工具提示中,IDE通常只显示声明的类型。