Open
Description
π Search Terms
constraints conditional types type variables nested
π Version & Regression Information
- This is the behavior in every version I tried
β― Playground Link
π» Code
type IsMatchingStringOneLevel<T extends string> = T extends `a${string}`
? true
: false;
function f2<S extends string>(x: IsMatchingStringOneLevel<S>) {
let t: true = x; // Error
let f: false = x; // Error
}
type IsMatchingStringTwoLevels<T extends string> = T extends `a${string}`
? T extends `${string}z`
? true
: false
: false;
function f3<S extends string>(x: IsMatchingStringTwoLevels<S>) {
let t: true = x; // Error
let f: false = x; // Ok but should be an error
}
π Actual behavior
It doesn't error on the fourth assignment
π Expected behavior
It should error
Additional information about the issue
This is just a variant of what was fixed for one-level conditionals in #56004