Skip to main content
Journey Uncommon Logo
JourneyUncommon
hardTypeScriptstructural typing unsoundnessSingle-choice MCQ

Under `strictFunctionTypes`, why is the assignment of `Comparator<number>` to `Comparator<unknown>` accepted, even though it lets a comparator written for numbers receive `unknown` values?

interface Comparator<T> { compare(a: T, b: T): number; } const cn: Comparator<number> = { compare: (a, b) => a - b }; const ca: Comparator<unknown> = cn;