我想定义一个typescript interface,将答案从web服务映射到一个类型(类似于图here所示).下面是一个例子.

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

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

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

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

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

我想可以使用另一个术语定义属性,然后以某种方式定义它的别名,如建议的here,或使用var代替建议的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".但如果使用不同的类型定义相同的属性,则会出现以下错误:

"type"的所有声明必须具有相同的修饰符.


因此,除非您试图修改全局可用的接口Event,否则您应该 Select 接口的另一个名称.

Typescript相关问答推荐

为什么在TypScript中将类型守护的返回类型写成This is(

如何使用另一个类型的属性中的类型

无需刷新即可让现场访客逆变

脉轮ui打字脚本强制执行图标按钮的咏叹调标签-如何关闭

如何为ViewContainerRef加载的Angular组件实现CanDeactivate保护?

使用React处理Websocket数据

HttpClient中的文本响应类型选项使用什么编码?''

打印脚本丢失函数的泛型上下文

React重定向参数

在实现自定义主题后,Angular 不会更新视图

是否可以判断某个类型是否已合并为内部类型?

跟踪深度路径时按条件提取嵌套类型

TYPE FOR ARRAY,其中每个泛型元素是单独的键类型对,然后在该数组上循环

S,为什么我的T扩展未定义的条件在属性的上下文中不起作用?

如何在打字角react 式中补齐表格组

基于闭包类型缩小泛型类型脚本函数的范围

如何在Vue动态类的上下文中解释错误TS2345?

确保财产存在

为什么过滤器不改变可能的类型?

Typescript泛型-键入对象时保持推理