Why does `IsTrue<boolean>` resolve to `"yes" | "no"` rather than a single branch?type IsTrue<T> = T extends true ? "yes" : "no"; type R = IsTrue<boolean>;