הקלדת תכונת "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 כדי לתקן את זה.

בינתיים אסמן זאת כתגובה לעת עתה ואעדכן אותה ברגע שהבעיה תתוקן ותשוחרר. תודה!