I think I understand it. If a return type is described as x is y, then typescript assumes that if the function returns true x is y.
x is y
x
y
declare const x: y | z; if (isY(x)) { // `x` is `y`; } // `x` is `y | z`
However, with asserts x is y, typescript will assume that the function will throw if x isn't y.
asserts x is y
declare const x: y | z; // will throw if `x` isn't `y` assertIsY(x); // `x` is `y`
Super cool!
Yeah, that is true, it's upto you to do an exhaustive check on whether an object is of that type before returning true.
Yeah, I understood the concept, I was just confused by the difference of asserts x is y vs x is y
Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink.
Hide child comments as well
Confirm
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
I think I understand it. If a return type is described as
x is y
, then typescript assumes that if the function returns truex
isy
.However, with
asserts x is y
, typescript will assume that the function will throw ifx
isn'ty
.Super cool!
Yeah, that is true, it's upto you to do an exhaustive check on whether an object is of that type before returning true.
Yeah, I understood the concept, I was just confused by the difference of
asserts x is y
vsx is y