The contrast among the outcomes of each example unveils how the 'Generic Type' functions and what distinguishes using 'extends' independently?
type NameOrId<T> = T extends number ? 'add' : 'plus';
type foo = string | number;
type x = NameOrId<foo>
// x is 'add' | 'plus'
type bar = foo extends number ? 'add' : 'plus'
// bar is 'plus'
type zoo = foo extends number | string ? 'add' : 'plus'
// zoo is 'add'