# 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 -->