create react app - เกิดข้อผิดพลาดเมื่อเรียก super.method() บนเมธอดที่ถูกกำหนดเป็นฟังก์ชันลูกศรใน Typescript
เมื่อเมธอดถูกกำหนดในคลาสฐานเป็นฟังก์ชันลูกศร เมื่อเรียกใช้เมธอดนั้นในคลาสที่สืบทอดผ่าน super.method() ฉันได้รับข้อผิดพลาด "สามารถเข้าถึงได้เฉพาะเมธอดสาธารณะและป้องกันของคลาสฐานผ่านคำหลัก 'super' เท่านั้น.ts(2340)" แม้ว่าจะกำหนดเมธอดเป็นสาธารณะแล้วก็ตาม
ฉันเข้าใจว่าในฟังก์ชันลูกศร (arrow function) บริบทเป็นแบบ lexical ซึ่งจะมีผลต่อค่าของ this และ super ในฟังก์ชันลูกศร แต่ในภาพด้านบน Sun.met1 ไม่ได้ถูกกำหนดเป็นฟังก์ชันลูกศร ดังนั้นฉันจึงไม่เห็นว่าทำไมมันจึงเข้าถึง Father.met ไม่ได้
คำตอบ #1
คุณสามารถแก้ไขสิ่งนี้ได้โดยการเปลี่ยน target ใน tsconfig.json ของคุณจาก es5 เป็น es6 หรือใหม่กว่า:
"target": "es6"
ฉันไม่แน่ใจว่านี่เป็นไปตามการออกแบบหรือไม่ แต่ได้เปิด https://github.com/microsoft/TypeScript/issues/32121 เพื่อขอคำชี้แจงจากทีม TS
อีกวิธีหนึ่งคือใช้วิธีปกติแทนฟังก์ชันลูกศร
