type TypeName < T > = T extends string ? "string" : T extends number ? "number" : T extends boolean ? "boolean" : T extends undefined ? "undefined" : T extends Function ? "function" : "object" ; const a1 = "string" ; const a2 = "string" ; const b = "boolean" ; const c = "undefined" ; const d = "function" ; const e = "object" ;