ค้นหาเว็บไซต์

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

บทความที่เกี่ยวข้อง