Bug Report
π Search Terms
type narrow argument
π Version & Regression Information
- This is the behavior in every version I tried
β― Playground Link
https://www.typescriptlang.org/play?ts=4.4.2#code/CYUwxgNghgTiAEAzArgOzAFwJYHtXwHcYoAHAMTTAApEAueKzAD3oGEMmBKeAXgD54ANxxZgnesNEAoUJFgIU6bHnhwAjsixwAyhhhUAzvQN6sqAObihI4FKlmMIGIihgE7JvADeU+PAwAFjA4BIYYUBjIRvCoyAC2AEZOVqgggk4A3FIAvnZQBgCe6EiUyviIAEyMHGwc3D5+ECAY8NEmMGbm8AA+SFAQBgg88GigiGYgwPD506gFvvBYiAwAhAbczAB0gcGhAIwADAecC+qaOnqGJ7lSRKQU6FT5RWAlSrj41SzwHvULTS02qYLD0+gMhiNUGMJlMZlA5gslqt1vAtjsQlRDsdTiANFoQLp9OscidbsRyJQnoViopMB8GMw-o1mq1jMCur0XODeJDoalYQZZvM-EiqGsNhxtkEMViTn4zvjCVd4AB6FXwAA8AFotfAAAYGPWLQXtTqgrmDElSIA
π» Code
declare function wrapFunc(f: (ctx: Ctx) => void): void
declare function requireStr(s: string): void
interface Ctx {
throw(status: number): never;
}
async function f2(ctx: Ctx) {
let s: string | false = undefined as any
if (!s) ctx.throw(100)
requireStr(s)
}
wrapFunc(async function (ctx: Ctx) {
let s: string | false = undefined as any
if (!s) ctx.throw(100)
requireStr(s)
})
wrapFunc(async function (ctx) {
let s: string | false = undefined as any
if (!s) ctx.throw(100)
requireStr(s) // <-- Compile Error! here `s` is string | false
})
Bug Report
π Search Terms
type narrow argument
π Version & Regression Information
β― Playground Link
https://www.typescriptlang.org/play?ts=4.4.2#code/CYUwxgNghgTiAEAzArgOzAFwJYHtXwHcYoAHAMTTAApEAueKzAD3oGEMmBKeAXgD54ANxxZgnesNEAoUJFgIU6bHnhwAjsixwAyhhhUAzvQN6sqAObihI4FKlmMIGIihgE7JvADeU+PAwAFjA4BIYYUBjIRvCoyAC2AEZOVqgggk4A3FIAvnZQBgCe6EiUyviIAEyMHGwc3D5+ECAY8NEmMGbm8AA+SFAQBgg88GigiGYgwPD506gFvvBYiAwAhAbczAB0gcGhAIwADAecC+qaOnqGJ7lSRKQU6FT5RWAlSrj41SzwHvULTS02qYLD0+gMhiNUGMJlMZlA5gslqt1vAtjsQlRDsdTiANFoQLp9OscidbsRyJQnoViopMB8GMw-o1mq1jMCur0XODeJDoalYQZZvM-EiqGsNhxtkEMViTn4zvjCVd4AB6FXwAA8AFotfAAAYGPWLQXtTqgrmDElSIA
π» Code