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)