我正在尝试使用名为“@type”的属性在TypeScript中声明一个类型,以便与我的Java API中的某些类型对应:
export interface Foo {
id : string;
name : string;
@type: string;
}
但是,我的VS代码中出现编译器错误。
为了确保它不是JavaScript问题,我在浏览器控制台中尝试了let test = JSON.parse('{"@type" : "value"}')
,它运行正常。
那么如何声明这样一个类型,其属性名称以@?
开头答案 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'博客条目: