I made a very simple example here:
class Test<Initialized extends boolean = boolean> {
property?: Initialized extends true ? string : Initialized extends false ? null : string | null
private initialized = false
public initialize() {
this.initialized = true
}
public isInitialized(): this is Test<true> {
return this.initialized
}
}
const instance = new Test()
const test = (instance: Test) => {
if (instance.isInitialized()) return
instance.initialize()
// ^? (parameter) instance: never
// Why is this not const instance: Test<true>?
}
test(instance)
Could someone explain why this isn't working as expected please?
The Playground lets you write TypeScript or JavaScript online in a safe and sharable way.