// Problem 1: Error spans are useless in contextually-typed array/object literal casestypeKind='foo'|'ball';// Error is on declared identifier instead of bad elementconstka: Kind[]=['foo','ball','xxxx','foo','ball'];// Error is on declared identifier instead of bad keyconstko: {[s: string]: Kind}={'x': 'foo','y': 'xxxx','z': 'foo'};// Problem 2: Subtype reduction screwage in the presence of contextual typetypeOK={ok?: boolean};// No error??consto1: OK='??' ? {ok: 'wat'} : {};// Problem 3: Aliased subtype reduction screwageconstobj='??' ? {ok: 'wat'} : {};// No error??consto2: OK=obj;Hypotheses:
- Computing a union type in the presence of a contextual type is a waste of time
- If we do this, we can produce good error spans?
- Unioning
{ x: T } with a fresh { } should produce { x?: T } - Unioning a fresh object literal with
{ } should do something special - Unioning fresh
{ x: number, y: number } | { x: number } should produce { x: number, y?: number}
Hypotheses:
{ x: T }with a fresh{ }should produce{ x?: T }{ }should do something special{ x: number, y: number }|{ x: number }should produce{ x: number, y?: number}