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

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

อีกวิธีหนึ่งคือใช้วิธีปกติแทนฟังก์ชันลูกศร