הסקת טיפוס ב-TypeScript לפרמטר של פונקציה פנימית
function makeBox<T, U extends () => (input: T) => number>(value: {
t: T
u: U
}) {
return value
}
makeBox({
t: 'ada',
u: () => {
return (input) => {
return Number.parseInt(input)
}
},
})
הדוגמה הזו תישבר, הקלט יופיע כ-unknown.
עם זאת, אם פשוט נוסיף ארגומנט אחד לפונקציה, זה פתאום יתחיל לעבוד
function makeBox<T, U extends (noop: never) => (input: T) => number>(value: {
t: T
u: U
}) {
return value
}
makeBox({
t: 'ada',
u: (_noop) => {
return (input2) => {
return Number.parseInt(input2)
}
},
})
למה זה כך? מה ההיגיון מאחורי זה?

