פונקציה גנרית ב-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);) לא מבצע בדיקת נכס עודף, אין ספציפיקציה על זה, אז אולי זה מכוון כך