# Bug Report <!-- Please fill in each section completely. Thank you! --> ### π Search Terms union types narrowed incorrectly <!-- What search terms did you use when trying to find an existing bug report? List them here so people in the future can find this one more easily. --> ### π Version & Regression Information v4.3.0-dev.20210426 ### β― Playground Link <!-- A link to a TypeScript Playground "Share" link which shows this behavior The TypeScript Workbench can be used for more complex setups, try https://www.typescriptlang.org/dev/bug-workbench/ As a last resort, you can link to a repo, but these will be slower for us to investigate. --> [Playground link with relevant code](https://www.typescriptlang.org/play?ts=4.3.0-dev.20210426#code/CYUwxgNghgTiAEAzArgOzAFwJYHtXygGdCQYMAeAFQD4AKANygmRAC4DUBPASnaJLKF4jZgixDKAWABQM0JFgIweQhiQ4c7VMgC2AI1LwAPvFUwsqAOYyZ-UhQCMx0xnNW6iDdxvTlqVfB6sPAAvOo48AD0kWYWlkA) ### π» Code <!-- Please post the relevant code sample here as well--> ```ts declare function assert<T>(value: any): asserts value is T declare const foo: number | string | boolean assert<1 | string>(foo) const bar = foo //string ``` ### π Actual behavior `foo` is narrowed to `string` ### π Expected behavior `foo` should be narrowed to `1 | string` <!-- What you expected to happen instead, and why -->