סוג החזרה זהה לסוג הקלט ב-TypeScript
יש לי שתי פונקציות שעושות את אותו הדבר עם ההבדל היחיד שסוגי הקלט וסוגי הפלט שונים. תהיתי איך אני יכול "לאחד" את הפונקציות הללו לאחת ואחת הרעיונות הייתה להשתמש בסוג איגוד, אבל המגבלה שלי היא שכאשר הקלט הוא אחד מחברי האיגוד, הערך המוחזר חייב להיות אותו דבר.
const getViewStyle = (styles: ViewStyle[]): ViewStyle => {
return Object.assign({}, ...styles);
};
const getTextStyle = (styles: TextStyle[]): TextStyle => {
return Object.assign({}, ...styles);
};
תשובה #1
אתה יכול לעשות את זה:
const flattenObjectsToSingle = <T>(items: T[]): T => { ...
תשובה #2
שילוב של טיפוסים כלליים וטיפוסי השערה יהיה הטוב ביותר. התשובה המקובלת תאפשר ללינטר של TypeScript להמשיך להתלונן אם אתה מצפה שאחד מהטיפוסים יוחזר כאשר אתה משתמש בפונקציה.
אז, לדעתי, זו תהיה התשובה הטובה ביותר:
const getStyle = <T extends TextStyle | ViewStyle >(styles: T[]): T => {
return Object.assign({}, ...styles);
};
מה שזה בעצם אומר הוא שהפונקציה מצפה למערך של TextStyle או ViewStyle ומחזירה רשומה אחת מכל סוג שניתן.
הזכות הולכת לסרטון של בן עואד ביוטיוב: https://www.youtube.com/watch?v=nViEqpgwxHE
