Repository navigation
TypeScript 3.1 improved error UX meta-issue #26077
Description
Activity
- addedDomain: Error MessagesThe issue relates to error messagingThe issue relates to error messagingMeta-IssueAn issue about the team, or the direction of TypeScriptAn issue about the team, or the direction of TypeScriptDomain: Related Error SpansSpecifying regions for error messages/diagnostics on multiple locations.Specifying regions for error messages/diagnostics on multiple locations.
on Jul 31, 2018 Comparing my DX/UX experience from working with flow versus TypeScript, the error messages is one of the few things that I preferred how flow does it. Especially after flow v0.66 release. I would love it if typescript would adopt some for the formatting and helpful information that flow has in their error messages.
This blog post explains more about the flow 0.66 error message changes: https://medium.com/flow-type/better-flow-error-messages-for-the-javascript-ecosystem-73b6da948ae2
There is so much room for improvement here. For example:
- prettifying/formatting the outputted types
- syntax highlighting
- bold/highlight the conflicting parts
Heres and example of the ginormous unstructured blob of text that is a ts error with big types involved:
Type '({ expandedRowIds, orderBy, currentPage, filters: { columns: columnFilters, period, categoryIds }, ...restUrlQueryState }: Pick<Overwrite<DataGridUrlQueryStateUrlSerialized, { filters: { columns: { promotionName?: string | undefined; startDate?: string | undefined; endDate?: string | undefined; "sumFacts.switching.amount"?: string | undefined; "sumFacts.netLift.profit"?: string | undefined; "sumFacts.netLift.amount"?: string | undefined; }; period: Date[]; categoryIds: string[]; }; }>, "hiddenColumnNames" | "filters" | "orderBy" | "expandedRowIds" | "currentPage">, pageSize: any) => Dictionary<any>' is not assignable to type '(a: Overwrite<DataGridUrlQueryStateUrlSerialized, { filters: { columns: { promotionName?: string | undefined; startDate?: string | undefined; endDate?: string | undefined; "sumFacts.switching.amount"?: string | undefined; "sumFacts.netLift.profit"?: string | undefined; "sumFacts.netLift.amount"?: string | undefined; }; period: Date[]; categoryIds: string[]; }; }>) => DataGridQueryVariables'.Another interesting thing that happened with flow is the glow project that formatted errors and made them way more readable (I believe all or some of glows functionality got integrated into flow itsself.).
DanielRosenwasser commented
on Dec 14, 2018 MemberAuthorMore actionsYup, agreed. We have some work that will enable that, but this is a pretty old issue at this point. Opening a specific issue to track that would be super helpful.
Tracking exactly what? Should I just create an issue of my last comment or should I break it down in some way?
DanielRosenwasser commented
on Dec 14, 2018 MemberAuthorMore actionsYup, something like that but with context that you're talking about the command line
Done: #29059
Continuing on from the release of TypeScript 3.0, we're committed to improving the user experience all around, and following up on both #25310 and #25257.
Error improvements
(:running_man: implies we have an existing PR)
Related error spans
(:running_man: implies we have an existing PR)
The following didn't make the cut, or are in 3.2:
IntrinsicAttributes(Simplify error messages against intersections of weak types #24146 🏃♂️)