The first solution is my own, and the following solutions were sourced from the Michigan TypeScript Youtube Channel and xinchaobeta's solution, respectively.
// @noImplicitAny
// @strict
export type IsNegativeNum<T extends number | string | null> = TrimLeft<
`${T}`,
" "
> extends `-${infer Val extends string}`