首页 > 解决方案 > 什么是打字稿中的 __type 关键字?

问题描述

interface IAnotherService extends Service1<string> {
  __type: "com.east.service#anotherservice";
}

我的问题是什么是“__type”关键字?它有什么作用?

标签: typescript

解决方案


这不是关键字;它只是接口中属性的名称,bar例如

interface Foo { 
  bar: string; 
}

所以如果你有一个vtype的值IAnotherService,那么你大概可以像这样索引它v.__type

declare const v: IAnotherService;
v.__type; // okay

如果没有更多上下文,很难确定这是真实属性(您可以在运行时访问它)还是幻像属性(它实际上并不存在,但您只是使用它,因此 TypeScript 可以跟踪运行时不存在的额外类型信息) . 双下划线暗示我可能是后者。幻像属性的一个用途是模拟名义类型,称为“标记”类型;请参阅此常见问题解答条目以获取更多信息。

Playground 代码链接


推荐阅读