type-challenges
type-challenges copied to clipboard
25747 - IsNegativeNumber
type IsNegativeNumber<T extends number> =
IfUnion<T, never, number> extends T
? never
: `${T}` extends `-${string}`
? true
: false
type IfUnion<T, UnionCase, NonUnionCase, U = T> = T extends any ? [U] extends [T] ? NonUnionCase : UnionCase : never
type _Number1 = Expect<Equal<number extends 0 ? '✅' : '❌', '❌'>>
type _Number2 = Expect<Equal<number extends number ? '✅' : '❌', '✅'>>
type _Number3 = Expect<Equal<number extends -1 | -1 ? '✅' : '❌', '❌'>>
type _Number4 = Expect<Equal<number extends -1 ? '✅' : '❌', '❌'>>
type _Number5 = Expect<Equal<number extends never ? '✅' : '❌', '❌'>>
type _Never1 = Expect<Equal<never extends 0 ? '✅' : '❌', '✅'>>
type _Never2 = Expect<Equal<never extends number ? '✅' : '❌', '✅'>>
type _Never3 = Expect<Equal<never extends -1 | -1 ? '✅' : '❌', '✅'>>
type _Never4 = Expect<Equal<never extends -1 ? '✅' : '❌', '✅'>>
type _Never5 = Expect<Equal<never extends never ? '✅' : '❌', '✅'>>