יש לי ספריית JavaScript שאני מתחזק, ואני רוצה ליצור קובץ טייפים (index.d.ts
) עבור מי שרוצה להשתמש בה עם TypeScript.
נתקלתי בבעיה - פונקציה שמקבלת שני ארגומנטים, והטייפ של הארגומנט השני משתנה לפי הפרמטר הראשון.
דוגמה מופשטת:
function doSomething (mode, data) {
if (mode == 'add') {
const { num } = data;
return num + 1;
} else if (mode == 'upper') {
const { str } = data;
return str.toUpperCase();
}
}
הפונקציה מקבלת פרמטר mode
ואובייקט data
,
אם הפרמטר הראשון (mode
) הוא add
אז השני (data
) צריך להיות אובייקט עם פרופרטי num
, ואם הפרמטר mode
הוא upper
אז data
צריך להיות אובייקט עם פרופרטי str
.
אני לא רוצה לשלב את הארגומנטים לאובייקט אחד של mode ו-data, מכיוון שזה ישבור הרבה מאוד קוד קיים.
לא הצלחתי למצוא מידע רלוונטי בגוגל, האם זה אפשרי בכלל?
אשמח לעזרה, תודה מראש.