News for hackers. Stuff that matters.
Re:I’m porting the TypeScript type checker tsc to Go by travisd on Tuesday January 25, 2022 @02:12PM (#30076525)
To this point, many teams are already using subsets of TypeScript to improve compilation times. Often times it’s things like always declaring return types on functions to avoid the compiler having to infer it (especially between module boundaries). Calling this a “subset of typescript” might be strong wording, but it does suggest there is some desire in that general area.
Re:I’m porting the TypeScript type checker tsc to Go by fault1 on Tuesday January 25, 2022 @02:17PM (#30076585)
It seems like depending on how you configure typescript (e.g, in tsconfig), typescript is already something like an ensemble of mini-languages with different dialects and semantics. Much more so than other languages. But I agree, restricted typescript that has to do less work (data or control flow analysis) would probably be on the orders of magnitude faster.
Re:I’m porting the TypeScript type checker tsc to Go by vosper on Tuesday January 25, 2022 @03:40PM (#30077720)
> To this point, many teams are already using subsets of TypeScript to improve compilation times. Often times it’s things like always declaring return types on functions to avoid the compiler having to infer it (especially between module boundaries).

I hadn't heard of this trick - how much improvement does it make? Seems like it might be good for readability, too?

Re:I’m porting the TypeScript type checker tsc to Go by rslabbert on Tuesday January 25, 2022 @07:23PM (#30080078)
I haven't found any large scale analyses but here's an example of a simple type annotation halving compilation time: https://stackoverflow.com/questions/36624273/investigating-l...

The Typescript compiler performance wiki might also be of interest: https://github.com/microsoft/TypeScript/wiki/Performance

Re:I’m porting the TypeScript type checker tsc to Go by travisd on Tuesday January 25, 2022 @04:23PM (#30078256)
I haven’t personally benchmarked it, but I know it’s available as an eslint rule (all exported functions must have declared return types).
Re:I’m porting the TypeScript type checker tsc to Go by Smaug123 on Tuesday January 25, 2022 @06:50PM (#30079813)
This makes sense for semantic reasons though. If you accidentally return a `number` when you returned a `string` in some earlier branch, Typescript will happily unify them and now your function silently returns `string | number`. The linting rule prevents this.
Re:I’m porting the TypeScript type checker tsc to Go by afdbcreid on Tuesday January 25, 2022 @06:19PM (#30079548)
I always thought this is because some people prefer this style.