typescript - จะเกิดอะไรขึ้นกับโปรเจกต์ Vuejs ที่ใช้ class components ใน Vuejs v3.0?
ฉันอยากอัปเกรดโปรเจกต์ vuejs ของฉันไปเป็น typescript ที่อิงกับ class components แต่ฉันอ่านใน issue ของ vue https://github.com/vuejs/rfcs/pull/17#issuecomment-494242121 :
อัปเดต: ข้อเสนอเกี่ยวกับ Class API ถูกยกเลิกแล้ว
แล้วจะเกิดอะไรขึ้นกับโปรเจกต์ที่สร้างขึ้นด้วยคลาสคอมโพเนนต์ที่มีอยู่แล้ว? และที่สำคัญกว่านั้น ตามบทความนี้: https://alligator.io/vuejs/using-typescript-with-vue/ ซึ่งได้กล่าวว่า
เนื่องจากเราไม่ได้ใช้ไวยากรณ์แบบคลาส คุณจึงใช้คำสำคัญ as เพื่อประกาศข้อมูลเป็นชนิดข้อมูล
การใช้ TypeScript แบบนี้ใน Vue 3.0 ปลอดภัยหรือไม่?
คำตอบ #1
ปัจจุบันยังไม่มี API แบบคลาสอย่างเป็นทางการ RFC เคยเกี่ยวกับการเพิ่ม API แบบคลาส แต่ถูกยกเลิกด้วยเหตุผลที่ได้หารือไว้ที่นั่น
โครงการที่มีอยู่กำลังใช้ไลบรารี vue-class-component ซึ่งสร้างขึ้นบน API ของคอมโพเนนต์แบบอ็อบเจ็กต์อย่างเป็นทางการ (เรียกว่า Options API อย่างเป็นทางการ) สิ่งนี้ควรใช้งานได้ต่อในเวอร์ชัน 3.0 (เพราะ Options API ยังคงเหมือนเดิม) แต่ก็มีข้อจำกัดเช่นเดียวกับที่กล่าวถึงใน RFC นี่คือความคิดเห็นจากเจ้าหน้าที่ดูแลที่ประกาศการสนับสนุน Vue 3
บทความลิงก์ที่สองกำลังใช้ TypeScript โดยไม่ใช้ vue-class-component - ไม่มีคลาส มีเพียง API ส่วนประกอบแบบวัตถุปกติ + การระบุชนิดของ TypeScript ดังนั้นใช่ สิ่งนี้จะทำงานได้ใน 3.0
อย่างไรก็ตาม หากคุณเพิ่งเริ่มใช้ TypeScript ใน Vue ตอนนี้ ผมขอแนะนำอย่างยิ่งให้ลองดู composition API ใหม่ที่จะถูกเพิ่มในเวอร์ชัน 3.0 มันเป็น API อย่างเป็นทางการ (ไม่ใช่ไลบรารี) และมีประโยชน์มากมายเมื่อเปรียบเทียบกับโซลูชั่นที่มีอยู่ทุกตัว
คุณยังสามารถใช้ Composition API กับ Vue 2 ได้ด้วย thanks to composition-api - นี่คือปลั๊กอิน แต่มีแผนที่จะทำให้เป็นทางการ รวมเข้าไปในแกนของ Vue อย่างดีกว่า และดูแลโดยทีมงานหลักของ Vue