Typescript - 如何声明以@开头的属性名称?

时间:2018-01-17 01:51:31

标签: javascript json typescript

我正在尝试使用名为“@type”的属性在TypeScript中声明一个类型,以便与我的Java API中的某些类型对应:

export interface Foo {
    id : string;
    name : string;
    @type: string;
}

但是,我的VS代码中出现编译器错误。

为了确保它不是JavaScript问题,我在浏览器控制台中尝试了let test = JSON.parse('{"@type" : "value"}'),它运行正常。

那么如何声明这样一个类型,其属性名称以@?

开头

1 个答案:

答案 0 :(得分:7)

Javascript(和Typescript)具有相对宽松的member命名规则;这意味着你可以使用不常见的角色,甚至是空间。但为了做到这一点,你需要将它们包含在quote s:

interface MyInterface {
    property1: string;
    "@property 2": string;
}

const myobj: MyInterface = {
    property1: "Value 1",
    "@property 2": "Value 2"
}

如果您使用非字母数字属性名称,则必须使用index语法来访问它们:

console.log(myobj.property1); // Dot notation
console.log(myobj["@property 2"]); // Index notation

有关更有趣和更深入的信息,请查看Mathias Bynens'博客条目: