הקלדת תכונת "this" של <svelte:component> ב-TypeScript
אני בונה סוג של מערכת פורטל ב-Svelte באמצעות חנות כדי להעביר קומפוננטה שתוצג במקום כלשהו מעל עץ הקומפוננטות.
הבעיה שלי אינה בהטמעת המערכת הזו, אלא בהקלדת החנות. ניסיתי להצהיר עליה כך:
const modalComponent = writable<SvelteComponent>(null)
אבל זה לא עובד. כאשר אני מייבא רכיב במקום כלשהו, VS Code מציג לי סוג של typeof <componentName>__SvelteComponent_, שאינו תואם את סוג SvelteComponent (שהוא למעשה מקבילה ל-SvelteComponentDev):
הטיפוס 'typeof
__SvelteComponent_' חסר את התכונות הבאות מהטיפוס 'SvelteComponentDev': $set, $on, $destroy, $capture_state, ועוד 2.
איך אני אמור להקליד את זה? אני רוצה להימנע מהשימוש ב-any.
עדכון: הנה קודסנדבוקס שיכול לשחזר את המקרה. למרבה הצער, אני לא מצליח לגרום לזה לעבוד עם TypeScript. אני עדיין משתף אותו, בתקווה שזה יעזור.
תשובה #1
עדכון (2023)
זה עכשיו תוקן ויש להקליד writable<typeof SvelteComponent>.
(כן, זה תוקן כבר מזמן, סליחה :D )
כפי ש-@dummdidumm הנחה אותי, יצרתי כאן בעיה עבור הצוות ב-Svelte כדי לתקן את זה.
בינתיים אסמן זאת כתגובה לעת עתה ואעדכן אותה ברגע שהבעיה תתוקן ותשוחרר. תודה!