In TypeScript 3.0, we're aiming for a better error message experience all around. One of the related efforts we've been working on is **related error spans**: #25257. However, in addition to that, we've received enough constructive feedback about error messages that we can act on. # TypeScript 3.0 * [X] Better JSX attribute errors (#23117) * [x] Better errors on object properties (#22170, #25030) * [X] Smarter elaborations when assigning `Foo<T>` to `Foo<U> | Bar<V>` (#24776) * [x] Smarter elaborations when assigning objects to `Foo | Bar[]` (#25750 ) * [X] Better guidance for non-existent deep imports (#24781) * [X] Better errors on always true/false conditions (#25245) * [x] Smarter elaborations against `Foo | null | undefined` (#25086) * [x] Better truncation on big types (#24778) * [x] Better duplicate declaration errors (#25324) # TypeScript 3.x These suggested improvements didn't make it in time for 3.0, but we'll hopefully continue working on them! Check out #26077 to keep track of them. * Better hints for uncalled types (#25308) * Better hints for 'cannot find name' errors (#25309) * Better errors on weak type intersections like `IntrinsicAttributes` (#24146 :running_man:) * Better errors when matching implementation signatures (#25488) _____ * ~Collapsing identical errors (#23393)~ * Subsumed by #25324.