TypeScript Version:  3.4.0-dev.20190202
Search Terms:
- assignment expression
 
- RHS infer
 
Code
class Test {
    foo?: Map<object, string>
    getFoo(obj: object) {
        // "foo" is inferred as "Map<any, any>" instead of "Map<object, string>"
        const foo = this.foo || (this.foo = new Map())
        foo.set(obj, 1) // No error!
    }
} 
Expected behavior: Infer foo to be Map<object, string>
Actual behavior: Infers foo to be Map<any, any>
Playground Link: Click here
Related Issues: Maybe #7782