我正在查看这行代码options?: { name?: string, async?: boolean }
。类型{ name?: string, async?: boolean }
的正确用语是什么?它看起来像一个" Anonymous类" Java中的定义,但我猜它被称为其他东西......
答案 0 :(得分:4)
根据Typescript语言规范,这些被称为Object Type Literals:
对象类型文字通过指定集合来定义对象类型 静态地认为存在于实例中的成员 类型。可以使用interface为对象类型文字指定名称 声明,但在其他方面是匿名的。
对象类型:
{
TypeBody <子>选择子>}
TypeBody:
TypeMemberList;
<子>选择子>
TypeMemberList,
<子>选择子> 的TypeMemberList:
TypeMember
TypeMemberList;
TypeMember
TypeMemberList,
TypeMemberTypeMember:
PropertySignature
CallSignature
ConstructSignature
IndexSignature
MethodSignature
答案 1 :(得分:-2)
匿名类型是正确的:
https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#3.8.10
类型查询对于捕获由各种构造(如对象文字,函数声明和命名空间声明)生成的匿名类型非常有用。
---
原始答案:
我不确定,但这里有一些我称之为的事情:
注意:
Typescript使用duck typing,因此可以使用具有匹配类型成员的替代类型描述。
另一个词:像鸭子一样呱呱叫的对象可以被称为鸭子,无论它最初被声明为什么类型(或者它是否有一个命名类型声明或者只是一个像你的例子那样的特殊声明)。
所以如果你有一个类型:
type Options = {name?:string, async?: boolean};
问题中的对象属于同一类型(就类型系统而言),即使它从未被声明为具有此类型。
但是,在工具提示中,IDE通常只显示声明的类型。