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

typescript - การใช้ undefined เป็นคีย์ในอ็อบเจ็กต์


ฉันใช้วัตถุเพื่อจับค่าหนึ่งไปยังค่าอื่น เช่น

const wordToNumber = {
  one: 1,
  two: 2,
  three: 3,
}

แต่ฉันก็มีกรณีพิเศษที่เมื่อผู้ใช้พยายามเรียกค่าด้วยคีย์ undefined ฉันต้องการให้มันคืนค่า 1 ด้วย

ดังนั้นฉันจึงเปลี่ยนวัตถุเป็นอันนี้:

const wordToNumber = {
  one: 1,
  two: 2,
  three: 3,
  [undefined]: 1,
}

และมันทำงานตามที่คาดไว้ในสนามเด็กเล่น:

แต่ TS แจ้งข้อผิดพลาดที่ undefined คีย์: TS2464: ชื่อคุณสมบัติที่คำนวณได้ต้องเป็นประเภท 'string', 'number', 'symbol' หรือ 'any'

และฉันกำลังสงสัยว่ามีอะไรผิดปกติในการใช้ undefined เป็นคีย์ของอ็อบเจ็กต์หรือไม่ หรือมันโอเคและฉันสามารถซ่อนคำเตือนด้วย ts-ignore ได้เลย?

คำตอบ #1

คุณเคยลองลบวงเล็บเหลี่ยมหรือยัง สิ่งนี้ใช้ได้ผลสำหรับฉันใน JSFiddle

const wordToNumber = {
    one: 1,
    two: 2,
    three: 3,
    undefined: 1,
}

alert(wordToNumber["one"])
alert(wordToNumber[undefined])

คำตอบ #2

บางทีคุณอาจจำเป็นต้องใช้ map ในกรณีนี้ (พร้อมกับ get และ set)?

const m = new Map();
m.set(undefined, "test");
console.log(m.get(undefined));