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

typescript - แชร์อินเตอร์เฟซระหว่างสองแอป?


ฉันสามารถตั้งกลไกการแชร์อะไรได้บ้างเพื่อให้โครงการ TypeScript สองโครงการที่แยกจากกันสามารถสื่อสารกันตามอินเทอร์เฟซที่เหมือนกัน?

แนวคิดพื้นฐานคือฉันมีโปรเจกต์หลักหนึ่งโปรเจกต์ที่จะใช้งานอินเทอร์เฟซ และจะมีอีกโปรเจกต์หนึ่งที่ใช้มัน อย่างไรก็ตามฉันไม่ต้องการให้โปรเจกต์ใด ๆ ขึ้นอยู่กับอีกโปรเจกต์หนึ่ง

โดยเฉพาะ: ฉันสามารถสร้างและแจกจ่ายไลบรารีของสัญญา (และอาจรวมถึงฟังก์ชันใด ๆ ที่เสริมพวกมันถ้าเป็นไปได้) ได้อย่างไร มีแนวทางที่ตั้งขึ้นแล้วหรือตัวอย่างที่เกิดขึ้นใหม่ในระบบนิเวศของ TypeScript ที่ใช้แจกจ่ายไลบรารีของอินเทอร์เฟซผ่าน NPM หรือไม่?

คำตอบ #1

หลายปีและหลายโครงการต่อมา คำตอบที่ง่ายที่สุดของคำถามนี้ในวันนี้คือเพียงแค่เผยแพร่ .d.ts ไปยังแพ็กเกจ npm แล้วใช้งานมัน! โครงการนี้สามารถสร้างจากแหล่งที่มาของ TypeScript และแม้แต่รวมถึงโค้ดที่สร้างแล้วด้วย

แน่นอน ส่วนใหญ่ของคำตอบนี้เกิดขึ้นมานานหลังจากที่ TypeScript และชุมชน JS ได้พัฒนาและมารวมตัวกันเพื่อสร้างมาตรฐานเหล่านี้

คำตอบ #2

เพียงแค่กำหนดอินเทอร์เฟซในไฟล์แยกต่างหาก หรือรวบรวมอินเทอร์เฟซที่ใช้ร่วมกันทั้งหมดในไฟล์ interfaces.ts (หรือ interfaces.d.ts) ทั้งสองโปรเจกต์สามารถอ้างอิงไฟล์นี้ได้ คุณสามารถมีสำเนาของไฟล์นั้นในทั้งสองโปรเจกต์

TypeScript ไม่เหมือนเช่น C# ที่คุณต้องอ้างอิง assembly พื้นฐาน (แม้ว่าจะมีการแก้ไขใน C# ด้วย interfaces ที่เป็นกลางต่อ assembly)

แต่ระวัง: TypeScript ไม่มี runtime เฉพาะที่รับประกันว่า interfaces ของคุณตรงกัน เนื่องจากทุกอย่างยังคงเป็น JavaScript ในเวลารันไทม์คุณต้องตรวจสอบให้แน่ใจว่า interfaces ตรงกัน หากโปรเจกต์ใดใช้ตัวอย่างเช่น interfaces เวอร์ชันอื่นที่มี properties ที่ไม่เคยมีในเวอร์ชันก่อนหน้านี้ คุณก็ยังคงเจอปัญหาอยู่

บทความที่เกี่ยวข้อง