Repro:
import { expectTypeOf } from 'expect-type'
type NoThisParam = (a: number) => void
type DateThisParam = (this: Date, a: number) => void
type UndefinedThisParam = (this: undefined, a: number) => void
type UnknownThisParam = (this: unknown, a: number) => void
type AnyThisParam = (this: any, a: number) => void
// `NoThisParam` and `UnknownThisParam` are the only ones that should be considered equivalent.
expectTypeOf<NoThisParam>().toEqualTypeOf<NoThisParam>();
expectTypeOf<NoThisParam>().not.toEqualTypeOf<DateThisParam>(); // Fails!
expectTypeOf<NoThisParam>().not.toEqualTypeOf<UndefinedThisParam>(); // Fails!
expectTypeOf<NoThisParam>().toEqualTypeOf<UnknownThisParam>();
expectTypeOf<NoThisParam>().not.toEqualTypeOf<AnyThisParam>(); // Fails!
Playground
Repro:
Playground