在打字稿界面中使用保留关键字作为 属性
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
,否则您应该选择另一个接口名称。
我想定义一个打字稿 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
,否则您应该选择另一个接口名称。