Take a look at the code snippet below
interface Fn {
(val: never): void
}
const fn1: Fn = () => {}
const fn2: Fn = (val: number) => {}
const fn3: Fn = (val: { canBeAnyThing: string }) => {}
Despite the lack of errors, I find it puzzling. For further clarification, check out this live demo on TypeScript Playground