Schema.is). In other libraries I got some errors because the usage of such methods. This happens when the schema has any transformation, then you run the assertion and suddenly you make typescript think the value is now of the right structure and values, but this may not be true. For very simple schemas this is probably not a problem, but if you turn a string into a number , a number into a boolean or anything like that this can be a source of bugs. Said like this it sounds as a stupid mistake, but it is not as obvious when you use it in filters for example (arrays, streams) specially if they came from a other part of the code base or were using older versions of the schema. Reading schema documentation about this feature there is no mention to any special handling about this, so I decided to ask. Here you have an example, in this video streams are filtered using guard functions, and then the stream becomes the parsed value at the type level, but I think it is not the case at runtime https://m.youtube.com/watch?v=4rlnjOViiRk&t=2212s&pp=ygUfSG93IEkgaGFuZGxlIHdlYiBzb2NrZXRzIHJlYWN0IA%3D%3D