I'm looking for a way to define a function that determines whether an argument is required based on a generic type. I guess this might be called "conditional arity".
// I want the function to expect no arguments if the generic type is never
foo<never>();
// This would complain that zero arguments are expected
foo<never>(4);
// These would work based on a non-never type
foo<number>(4);
foo<string>('bar');