פונקציה גנרית ב-Typescript לא מתלוננת על סוג ההחזרה של הפונקציה הקריאה חזרה
פונקציית Generic ב-TypeScript לא מתלוננת על סוג ההחזרה של Callback. האם היא לא אמורה להתלונן שסוגים לא תואמים כמו שהיא עושה עם האובייקט? למה זה תקין ב-TypeScript?
const a = <T>(shape: T | (() => T)): T => {
return shape instanceof Function ? shape() : shape;
}
const func = () => ({ x: '', o: '' });
a<{ x: string }>(func); // this should fail to compile
a<{ x: string }>({ x: '', o: '' }); // fails to compile
קישור למגרש משחקים
תשובה #1
זוהי בעיה ידועה ב-TypeScript. בעיית GitHub שדורשת תיקון.
לא מצאתי פתרון חלופי מתאים
תשובה #2
סוג הקשרי (במקרה שלך a<{ x: string }>(func);) לא מבצע בדיקת נכס עודף, אין ספציפיקציה על זה, אז אולי זה מכוון כך