Open zen0wu opened 3 years ago
There's no reason to have S
and F
in both functions; you can write
declare function resultIsSuccess<S extends Success>(r: Result<S, Failure>): r is S
declare function resultIsFailure<F extends Failure>(r: Result<Success, F>): r is F
which works as expected
Bug Report
🔎 Search Terms
narrowing union type
🕗 Version & Regression Information
⏯ Playground Link
Playground link with relevant code
💻 Code
🙁 Actual behavior
While
test1
works fine, intest2
, the else branch cannot narrow the type toHttpResponse<403>
.🙂 Expected behavior
test1
andtest2
are just narrowing downresult
using complementary type guards, their behavior should be consistent. And they are consistent in 4.1.