提问者:小点点

在typescript接口中使用保留关键字作为属性


我想定义一个typescript接口来将来自Web服务的答案映射到一个类型(类似于此处显示的内容)。这是一个示例答案。

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

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

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

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

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

我想可以使用另一个术语定义属性,然后以某种方式定义它的别名,如这里所建议的,或者使用var代替这里所建议的,但是我不知道如何在我的情况下做到这一点。


共1个答案

匿名用户

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

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

这里的问题是您正在修改现有的接口,该接口已经将type定义为typestring

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

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

“type”的所有声明都必须具有相同的修饰符。

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