Below is a five-line “playground-size” demo that lets you watch the conditional type stay in its unevaluated form inside a generic function and collapse as soon as you call the function with a concrete argument.
// 1 ─ a tiny conditional type
type Kind<T> = T extends string ? "str" : "other";