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));
