在打字稿界面中使用保留关键字作为 属性

Use a reserved keyword as a property in a typescript interface

我想定义一个打字稿 interface 来将来自 Web 服务的答案映射到一个类型(类似于显示的内容 here)。这是一个示例答案。

{
    "type": "Seen",
    "creation": 33,
    "fileId": 6
}

因此,以下接口将是合适的。

interface Event {
    type: 'Accepted' | 'Judgment' | 'Seen';
    creation: number;
    fileId: number;
}

不幸的是,编译器不喜欢它:type 是保留关键字。

如何在界面中使用保留关键字作为 属性?

我想可以使用另一个术语来定义 属性,然后按照建议 here, or use var instead as suggested here 以某种方式为其定义别名,但我无法在我的情况。

interface 中使用名为 type 的属性是完全没问题的。事实上,你可以在接口中使用TypeScript的所有关键字:

interface Test {
  type: string
  class: string
  any: string
}

这里的问题是您正在修改一个 existing interface,它已经将 type 定义为 string 类型:

// lib.dom.d.ts
/** An event which takes place in the DOM. */
interface Event {
  readonly type: string;
  /* ... */
}

您可以定义多个同名接口来合并它们。这称为“Declaration Merging”。但是,如果您使用不同类型定义相同的属性,则会出现以下错误:

All declarations of 'type' must have identical modifiers.


因此,除非您尝试修改全局可用的接口 Event,否则您应该选择另一个接口名称。