function createLabel<T extends number | string>(idOrName: T): NameOrId<T> { throw "unimplemented" } let a = createLabel("typescript") let a: NameLabel let b = createLabel(2.8) function createLabel<2.8>(idOrName: 2.8): IdLabel let c = createLabel(Math.random() ? "hello" : 42) randomround