javascript - Typescript - วิธีประกาศชื่อแอตทริบิวต์ที่เริ่มต้นด้วย @
ฉันกำลังพยายามประกาศชนิดใน TypeScript พร้อมคุณสมบัติชื่อ "@type" เพื่อให้ตรงกับชนิดบางอย่างจาก Java API ของฉัน:
export interface Foo {
id : string;
name : string;
@type: string;
}
อย่างไรก็ตาม ฉันกำลังได้รับข้อผิดพลาดของคอมไพเลอร์ใน VS Code ของฉัน
เพียงเพื่อให้แน่ใจว่าไม่ได้เป็นปัญหาของ JavaScript ฉันได้ลอง let test=JSON.parse('{"@type" : "value"}') ในคอนโซลของเบราว์เซอร์และมันทำงานได้ปกติ
แล้วฉันจะประกาศประเภทแบบนั้นโดยมีชื่อแอตทริบิวต์เริ่มต้นด้วย @ ได้อย่างไร?
คำตอบ #1
Javascript (และ Typescript) มีข้อกำหนดในการตั้งชื่อ member ที่ค่อนข้างเสรี; ซึ่งหมายความว่าคุณสามารถใช้ตัวอักษรที่ไม่ค่อยพบและแม้แต่ช่องว่างได้ แต่เพื่อให้ทำเช่นนั้นได้ คุณต้องครอบพวกมันด้วย quote:
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:
- ชื่อ ตัวแปร JavaScript ที่ถูกต้องใน ECMAScript 6
- ชื่อคุณสมบัติ/กุญแจวัตถุที่ไม่ได้ใส่เครื่องหมายคำพูดใน JavaScript
