GeezerVison is showing github.com — `const` modifier on type parameters by ahejlsberg · Pull Request #51865 · microsoft/TypeScript
Conversation
With this PR we implement a new const modifier for type parameters. In a function, method, or constructor invocation, when a literal expression in an argument is contextually typed by a const type parameter, the literal expression is given the most precise type possible, similar to having applied an as const assertion (see #29510). The kinds of literal expressions affected by a const contextual type are string, numeric, and boolean literal values, array literals, and object literals.
The const modifier is permitted on type parameters of functions, methods, and classes. It is an error to apply the const modifier to type parameters of interfaces and type aliases.
Given the function declarations
declare function foo<const T>(x: T): T;
declare function bar<const T>(obj: [T, T]): T;
the invocations
const x1 = foo('a');
const x2 = foo(['a', ['b', 'c']]);
const x3 = foo({ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] });
const x4 = bar([{ a: 1, b: 'x' }, { a: 2, b: 'y' }]);
infer the types
declare const x1: "a";
declare const x2: readonly ["a", readonly ["b", "c"]];
declare const x3: {
readonly a: 1;
readonly b: "c";
readonly d: readonly ["e", 2, true, { readonly f: "g"; }];
};
declare const x4:
{ readonly a: 1; readonly b: "x"; } |
{ readonly a: 2; readonly b: "y"; };
A const type parameter has no effect on variables or other kinds of expressions used as function arguments. For example:
const a = [1, 2, 3]; // number[]
const b = foo(a); // number[]
The example above still requires writing [1, 2, 3] as const to infer type readonly [1, 2, 3] for a.
When a const type parameter is constrained to an array type, that array type should include a readonly modifier; otherwise, inferences for the type parameter will fail to meet the constraint. For example:
declare function baz<const T extends readonly unknown[]>(...args: T): T;
const z = baz(1, 'b', { a: 1, b: 'x' }); // readonly [1, "b", { readonly a: 1; readonly b: "x"; }]
Without the readonly modifier in the constraint, inference defaults to unknown[] because an inferred readonly tuple type wouldn't be assignable to unknown[].
Fixes #30680.
Fixes #41114.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Thundercraft5, aaronccasanova, Jack-Works, zyhou, davidkpiano, lffg, pioluk, ghoullier, tonivj5, jasonkuhrt, and 82 more reacted with thumbs up emoji
r-cyr, tjjfvi, conartist6, futurGH, Thundercraft5, almeidx, yume-chan, davidkpiano, lffg, endel, and 55 more reacted with hooray emoji
tonivj5, jasonkuhrt, beaussan, mkosir, Thundercraft5, ecyrbe, btoo, anuraghazra, oparin10, conejocarlo, and 35 more reacted with heart emoji
ecyrbe, btoo, Thundercraft5, anuraghazra, rae-hill, chernodub, crutchcorn, malcolmstill, MarkPieszak, Puppo, and 14 more reacted with rocket emoji
Thundercraft5, tonivj5, ecyrbe, tmm, MarkPieszak, unao, and Rudxain reacted with eyes emoji
All reactions
-
👍
92 reactions
-
🎉
65 reactions
-
❤️
45 reactions
-
🚀
24 reactions
-
👀
7 reactions
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
Anders Hejlsberg (@ahejlsberg)
The results of the perf run you requested are in!
Here they are:
Comparison Report - main..51865
| Metric |
main |
51865 |
Delta |
Best |
Worst |
| Angular - node (v16.17.1, x64) |
| Memory used |
340,534k (± 0.01%) |
339,574k (± 0.02%) |
-960k (- 0.28%) |
339,383k |
339,666k |
| Parse Time |
1.88s (± 0.83%) |
1.88s (± 0.53%) |
+0.01s (+ 0.32%) |
1.86s |
1.91s |
| Bind Time |
0.65s (± 0.95%) |
0.64s (± 0.56%) |
-0.01s (- 0.77%) |
0.64s |
0.65s |
| Check Time |
5.17s (± 0.60%) |
5.14s (± 0.52%) |
-0.03s (- 0.50%) |
5.07s |
5.18s |
| Emit Time |
5.15s (± 0.73%) |
5.05s (± 0.64%) |
-0.10s (- 1.88%) |
4.97s |
5.13s |
| Total Time |
12.84s (± 0.41%) |
12.72s (± 0.16%) |
-0.12s (- 0.95%) |
12.67s |
12.76s |
| Compiler-Unions - node (v16.17.1, x64) |
| Memory used |
187,013k (± 0.40%) |
186,475k (± 0.57%) |
-538k (- 0.29%) |
185,554k |
189,322k |
| Parse Time |
0.79s (± 0.76%) |
0.79s (± 0.82%) |
+0.01s (+ 0.89%) |
0.78s |
0.81s |
| Bind Time |
0.42s (± 1.12%) |
0.42s (± 1.61%) |
+0.00s (+ 0.95%) |
0.41s |
0.44s |
| Check Time |
6.06s (± 0.64%) |
5.96s (± 0.57%) |
-0.10s (- 1.72%) |
5.89s |
6.03s |
| Emit Time |
1.94s (± 0.53%) |
1.94s (± 1.18%) |
-0.00s (- 0.15%) |
1.91s |
2.01s |
| Total Time |
9.21s (± 0.46%) |
9.11s (± 0.46%) |
-0.10s (- 1.04%) |
9.01s |
9.19s |
| Monaco - node (v16.17.1, x64) |
| Memory used |
319,807k (± 0.05%) |
318,953k (± 0.04%) |
-854k (- 0.27%) |
318,804k |
319,496k |
| Parse Time |
1.42s (± 0.47%) |
1.41s (± 0.71%) |
-0.00s (- 0.21%) |
1.39s |
1.43s |
| Bind Time |
0.59s (± 0.88%) |
0.59s (± 0.68%) |
0.00s ( 0.00%) |
0.58s |
0.60s |
| Check Time |
4.87s (± 0.45%) |
4.92s (± 0.50%) |
+0.05s (+ 1.05%) |
4.87s |
4.97s |
| Emit Time |
2.73s (± 0.60%) |
2.70s (± 0.90%) |
-0.03s (- 0.95%) |
2.66s |
2.75s |
| Total Time |
9.61s (± 0.37%) |
9.64s (± 0.47%) |
+0.03s (+ 0.30%) |
9.55s |
9.72s |
| TFS - node (v16.17.1, x64) |
| Memory used |
282,303k (± 0.01%) |
281,251k (± 0.01%) |
-1,053k (- 0.37%) |
281,203k |
281,299k |
| Parse Time |
1.15s (± 0.65%) |
1.17s (± 0.79%) |
+0.02s (+ 1.65%) |
1.16s |
1.20s |
| Bind Time |
0.65s (± 5.76%) |
0.63s (± 5.63%) |
🟩-0.02s (- 3.52%) |
0.56s |
0.70s |
| Check Time |
4.78s (± 0.23%) |
4.69s (± 0.39%) |
-0.09s (- 1.90%) |
4.66s |
4.75s |
| Emit Time |
2.79s (± 1.77%) |
2.70s (± 1.74%) |
🟩-0.09s (- 3.22%) |
2.64s |
2.88s |
| Total Time |
9.38s (± 0.75%) |
9.19s (± 0.77%) |
-0.18s (- 1.96%) |
9.06s |
9.40s |
| material-ui - node (v16.17.1, x64) |
| Memory used |
435,359k (± 0.00%) |
435,377k (± 0.01%) |
+18k (+ 0.00%) |
435,325k |
435,506k |
| Parse Time |
1.63s (± 0.53%) |
1.63s (± 0.50%) |
-0.00s (- 0.12%) |
1.61s |
1.65s |
| Bind Time |
0.51s (± 0.88%) |
0.51s (± 1.02%) |
+0.00s (+ 0.59%) |
0.50s |
0.52s |
| Check Time |
11.86s (± 1.06%) |
12.12s (± 0.91%) |
+0.27s (+ 2.24%) |
11.87s |
12.35s |
| Emit Time |
0.00s (± 0.00%) |
0.00s (± 0.00%) |
0.00s ( NaN%) |
0.00s |
0.00s |
| Total Time |
14.00s (± 0.91%) |
14.26s (± 0.79%) |
+0.26s (+ 1.88%) |
13.98s |
14.50s |
| xstate - node (v16.17.1, x64) |
| Memory used |
516,191k (± 0.00%) |
516,233k (± 0.01%) |
+41k (+ 0.01%) |
516,159k |
516,292k |
| Parse Time |
2.28s (± 0.46%) |
2.30s (± 0.41%) |
+0.02s (+ 0.74%) |
2.28s |
2.33s |
| Bind Time |
0.84s (± 1.40%) |
0.84s (± 2.13%) |
-0.00s (- 0.12%) |
0.81s |
0.90s |
| Check Time |
1.37s (± 0.73%) |
1.36s (± 0.59%) |
-0.01s (- 0.88%) |
1.34s |
1.38s |
| Emit Time |
0.06s (± 0.00%) |
0.06s (± 0.00%) |
0.00s ( 0.00%) |
0.06s |
0.06s |
| Total Time |
4.55s (± 0.43%) |
4.55s (± 0.44%) |
+0.00s (+ 0.11%) |
4.51s |
4.61s |
System
| Machine Name | ts-ci-ubuntu |
| Platform | linux 5.4.0-131-generic |
| Architecture | x64 |
| Available Memory | 16 GB |
| Available Memory | 15 GB |
| CPUs | 4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz |
Scenarios
- Angular - node (v16.17.1, x64)
- Compiler-Unions - node (v16.17.1, x64)
- Monaco - node (v16.17.1, x64)
- TFS - node (v16.17.1, x64)
- material-ui - node (v16.17.1, x64)
- xstate - node (v16.17.1, x64)
| Benchmark |
Name |
Iterations |
| Current |
51865 |
10 |
| Baseline |
main |
10 |
Developer Information:Download Benchmark
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
Anders Hejlsberg (@ahejlsberg)
The results of the perf run you requested are in!
Here they are:
Compiler
Comparison Report - main..51865
| Metric |
main |
51865 |
Delta |
Best |
Worst |
| Angular - node (v18.10.0, x64) |
| Memory used |
341,047k (± 0.02%) |
340,194k (± 0.01%) |
-854k (- 0.25%) |
340,122k |
340,259k |
| Parse Time |
1.56s (± 0.74%) |
1.57s (± 1.14%) |
+0.01s (+ 0.45%) |
1.52s |
1.62s |
| Bind Time |
0.52s (± 1.07%) |
0.53s (± 1.14%) |
+0.01s (+ 1.35%) |
0.51s |
0.54s |
| Check Time |
4.01s (± 0.63%) |
4.00s (± 0.74%) |
-0.01s (- 0.35%) |
3.95s |
4.06s |
| Emit Time |
4.31s (± 0.74%) |
4.25s (± 0.92%) |
-0.06s (- 1.37%) |
4.16s |
4.32s |
| Total Time |
10.40s (± 0.40%) |
10.34s (± 0.70%) |
-0.06s (- 0.58%) |
10.22s |
10.51s |
| Compiler-Unions - node (v18.10.0, x64) |
| Memory used |
187,317k (± 1.10%) |
187,612k (± 1.10%) |
+295k (+ 0.16%) |
184,169k |
189,955k |
| Parse Time |
0.61s (± 1.09%) |
0.62s (± 0.96%) |
+0.00s (+ 0.49%) |
0.61s |
0.63s |
| Bind Time |
0.33s (± 1.01%) |
0.33s (± 1.36%) |
-0.00s (- 0.61%) |
0.32s |
0.34s |
| Check Time |
5.03s (± 0.60%) |
4.91s (± 0.50%) |
-0.12s (- 2.44%) |
4.86s |
4.98s |
| Emit Time |
1.55s (± 1.12%) |
1.54s (± 0.76%) |
-0.01s (- 0.52%) |
1.52s |
1.57s |
| Total Time |
7.52s (± 0.47%) |
7.39s (± 0.40%) |
-0.13s (- 1.73%) |
7.33s |
7.45s |
| Monaco - node (v18.10.0, x64) |
| Memory used |
320,414k (± 0.01%) |
319,476k (± 0.02%) |
-937k (- 0.29%) |
319,265k |
319,591k |
| Parse Time |
1.15s (± 0.67%) |
1.16s (± 1.53%) |
+0.00s (+ 0.35%) |
1.13s |
1.21s |
| Bind Time |
0.48s (± 1.92%) |
0.49s (± 1.40%) |
+0.00s (+ 0.83%) |
0.47s |
0.50s |
| Check Time |
3.85s (± 0.43%) |
3.92s (± 0.56%) |
+0.07s (+ 1.87%) |
3.87s |
3.96s |
| Emit Time |
2.24s (± 0.65%) |
2.24s (± 1.11%) |
-0.01s (- 0.36%) |
2.18s |
2.29s |
| Total Time |
7.72s (± 0.47%) |
7.79s (± 0.40%) |
+0.07s (+ 0.89%) |
7.73s |
7.85s |
| TFS - node (v18.10.0, x64) |
| Memory used |
283,688k (± 0.24%) |
283,637k (± 0.15%) |
-52k (- 0.02%) |
281,889k |
283,958k |
| Parse Time |
0.97s (± 2.73%) |
0.95s (± 2.79%) |
-0.01s (- 1.55%) |
0.92s |
1.05s |
| Bind Time |
0.46s (± 7.43%) |
0.51s (± 7.92%) |
+0.05s (+10.65%) |
0.43s |
0.57s |
| Check Time |
3.78s (± 0.52%) |
3.71s (± 0.70%) |
-0.07s (- 1.80%) |
3.67s |
3.79s |
| Emit Time |
2.22s (± 0.76%) |
2.19s (± 0.72%) |
-0.04s (- 1.62%) |
2.14s |
2.21s |
| Total Time |
7.43s (± 0.63%) |
7.36s (± 0.57%) |
-0.07s (- 0.94%) |
7.25s |
7.45s |
| material-ui - node (v18.10.0, x64) |
| Memory used |
436,019k (± 0.02%) |
435,974k (± 0.01%) |
-45k (- 0.01%) |
435,902k |
436,162k |
| Parse Time |
1.33s (± 0.70%) |
1.32s (± 0.77%) |
-0.01s (- 0.68%) |
1.30s |
1.34s |
| Bind Time |
0.49s (± 2.84%) |
0.49s (± 1.00%) |
+0.01s (+ 1.86%) |
0.48s |
0.50s |
| Check Time |
10.37s (± 0.55%) |
10.58s (± 1.10%) |
+0.21s (+ 2.02%) |
10.41s |
10.88s |
| Emit Time |
0.00s (± 0.00%) |
0.00s (± 0.00%) |
0.00s ( NaN%) |
0.00s |
0.00s |
| Total Time |
12.18s (± 0.48%) |
12.39s (± 0.98%) |
+0.21s (+ 1.72%) |
12.22s |
12.70s |
| xstate - node (v18.10.0, x64) |
| Memory used |
518,648k (± 0.02%) |
518,625k (± 0.02%) |
-23k (- 0.00%) |
518,508k |
518,889k |
| Parse Time |
1.90s (± 0.68%) |
1.89s (± 0.68%) |
-0.01s (- 0.42%) |
1.87s |
1.92s |
| Bind Time |
0.72s (± 2.91%) |
0.70s (± 2.83%) |
🟩-0.03s (- 3.73%) |
0.67s |
0.77s |
| Check Time |
1.05s (± 0.97%) |
1.04s (± 1.10%) |
-0.01s (- 1.05%) |
1.02s |
1.06s |
| Emit Time |
0.05s (± 0.00%) |
0.05s (± 0.00%) |
0.00s ( 0.00%) |
0.05s |
0.05s |
| Total Time |
3.72s (± 0.76%) |
3.68s (± 0.77%) |
-0.05s (- 1.21%) |
3.62s |
3.76s |
| Angular - node (v16.17.1, x64) |
| Memory used |
340,534k (± 0.01%) |
339,584k (± 0.02%) |
-949k (- 0.28%) |
339,371k |
339,682k |
| Parse Time |
1.88s (± 0.83%) |
1.87s (± 0.40%) |
-0.00s (- 0.16%) |
1.86s |
1.90s |
| Bind Time |
0.65s (± 0.95%) |
0.64s (± 0.53%) |
-0.01s (- 0.92%) |
0.64s |
0.65s |
| Check Time |
5.17s (± 0.60%) |
5.13s (± 0.48%) |
-0.04s (- 0.72%) |
5.05s |
5.17s |
| Emit Time |
5.15s (± 0.73%) |
5.08s (± 0.71%) |
-0.07s (- 1.34%) |
5.00s |
5.14s |
| Total Time |
12.84s (± 0.41%) |
12.73s (± 0.36%) |
-0.11s (- 0.87%) |
12.62s |
12.83s |
| Compiler-Unions - node (v16.17.1, x64) |
| Memory used |
187,013k (± 0.40%) |
186,814k (± 0.61%) |
-199k (- 0.11%) |
185,776k |
189,154k |
| Parse Time |
0.79s (± 0.76%) |
0.79s (± 0.95%) |
+0.00s (+ 0.25%) |
0.77s |
0.80s |
| Bind Time |
0.42s (± 1.12%) |
0.42s (± 0.89%) |
-0.01s (- 1.19%) |
0.41s |
0.42s |
| Check Time |
6.06s (± 0.64%) |
5.91s (± 0.52%) |
-0.15s (- 2.53%) |
5.83s |
5.97s |
| Emit Time |
1.94s (± 0.53%) |
1.92s (± 0.84%) |
-0.02s (- 0.98%) |
1.90s |
1.97s |
| Total Time |
9.21s (± 0.46%) |
9.03s (± 0.40%) |
-0.17s (- 1.88%) |
8.93s |
9.09s |
| Monaco - node (v16.17.1, x64) |
| Memory used |
319,807k (± 0.05%) |
318,821k (± 0.01%) |
-986k (- 0.31%) |
318,746k |
318,933k |
| Parse Time |
1.42s (± 0.47%) |
1.40s (± 0.54%) |
-0.01s (- 0.92%) |
1.38s |
1.42s |
| Bind Time |
0.59s (± 0.88%) |
0.59s (± 0.58%) |
-0.00s (- 0.68%) |
0.58s |
0.59s |
| Check Time |
4.87s (± 0.45%) |
4.91s (± 0.45%) |
+0.04s (+ 0.82%) |
4.88s |
4.96s |
| Emit Time |
2.73s (± 0.60%) |
2.69s (± 0.62%) |
-0.04s (- 1.50%) |
2.64s |
2.72s |
| Total Time |
9.61s (± 0.37%) |
9.60s (± 0.41%) |
-0.01s (- 0.14%) |
9.51s |
9.70s |
| TFS - node (v16.17.1, x64) |
| Memory used |
282,303k (± 0.01%) |
281,265k (± 0.01%) |
-1,038k (- 0.37%) |
281,214k |
281,317k |
| Parse Time |
1.15s (± 0.65%) |
1.16s (± 0.95%) |
+0.01s (+ 0.61%) |
1.14s |
1.19s |
| Bind Time |
0.65s (± 5.76%) |
0.63s (± 4.19%) |
🟩-0.02s (- 3.37%) |
0.57s |
0.67s |
| Check Time |
4.78s (± 0.23%) |
4.68s (± 0.37%) |
-0.10s (- 2.03%) |
4.65s |
4.71s |
| Emit Time |
2.79s (± 1.77%) |
2.72s (± 2.14%) |
-0.07s (- 2.47%) |
2.65s |
2.88s |
| Total Time |
9.38s (± 0.75%) |
9.20s (± 0.79%) |
-0.18s (- 1.90%) |
9.06s |
9.39s |
| material-ui - node (v16.17.1, x64) |
| Memory used |
435,359k (± 0.00%) |
435,346k (± 0.01%) |
-12k (- 0.00%) |
435,297k |
435,414k |
| Parse Time |
1.63s (± 0.53%) |
1.63s (± 0.58%) |
-0.01s (- 0.31%) |
1.61s |
1.64s |
| Bind Time |
0.51s (± 0.88%) |
0.51s (± 1.19%) |
-0.00s (- 0.59%) |
0.49s |
0.52s |
| Check Time |
11.86s (± 1.06%) |
12.14s (± 0.68%) |
+0.29s (+ 2.41%) |
11.97s |
12.29s |
| Emit Time |
0.00s (± 0.00%) |
0.00s (± 0.00%) |
0.00s ( NaN%) |
0.00s |
0.00s |
| Total Time |
14.00s (± 0.91%) |
14.27s (± 0.61%) |
+0.28s (+ 1.98%) |
14.10s |
14.44s |
| xstate - node (v16.17.1, x64) |
| Memory used |
516,191k (± 0.00%) |
516,160k (± 0.01%) |
-32k (- 0.01%) |
516,087k |
516,307k |
| Parse Time |
2.28s (± 0.46%) |
2.28s (± 0.44%) |
-0.01s (- 0.31%) |
2.26s |
2.30s |
| Bind Time |
0.84s (± 1.40%) |
0.82s (± 1.21%) |
-0.02s (- 1.91%) |
0.80s |
0.85s |
| Check Time |
1.37s (± 0.73%) |
1.35s (± 0.64%) |
-0.02s (- 1.31%) |
1.34s |
1.37s |
| Emit Time |
0.06s (± 0.00%) |
0.06s (± 0.00%) |
0.00s ( 0.00%) |
0.06s |
0.06s |
| Total Time |
4.55s (± 0.43%) |
4.51s (± 0.32%) |
-0.04s (- 0.84%) |
4.47s |
4.53s |
| Angular - node (v14.15.1, x64) |
| Memory used |
334,014k (± 0.00%) |
333,005k (± 0.01%) |
-1,008k (- 0.30%) |
332,956k |
333,048k |
| Parse Time |
2.04s (± 0.57%) |
2.04s (± 0.67%) |
+0.00s (+ 0.05%) |
2.01s |
2.08s |
| Bind Time |
0.69s (± 0.49%) |
0.70s (± 0.68%) |
+0.00s (+ 0.58%) |
0.69s |
0.71s |
| Check Time |
5.47s (± 0.29%) |
5.47s (± 0.65%) |
-0.00s (- 0.04%) |
5.41s |
5.55s |
| Emit Time |
5.36s (± 0.62%) |
5.24s (± 0.55%) |
-0.11s (- 2.15%) |
5.19s |
5.34s |
| Total Time |
13.56s (± 0.30%) |
13.45s (± 0.23%) |
-0.11s (- 0.80%) |
13.38s |
13.51s |
| Compiler-Unions - node (v14.15.1, x64) |
| Memory used |
183,370k (± 0.68%) |
181,110k (± 0.42%) |
-2,260k (- 1.23%) |
180,656k |
184,199k |
| Parse Time |
0.88s (± 0.76%) |
0.89s (± 0.58%) |
+0.01s (+ 0.91%) |
0.88s |
0.90s |
| Bind Time |
0.45s (± 1.09%) |
0.46s (± 0.80%) |
+0.00s (+ 0.44%) |
0.45s |
0.46s |
| Check Time |
6.38s (± 0.59%) |
6.21s (± 0.73%) |
-0.17s (- 2.62%) |
6.13s |
6.34s |
| Emit Time |
2.04s (± 0.78%) |
2.02s (± 0.78%) |
-0.03s (- 1.32%) |
1.99s |
2.06s |
| Total Time |
9.76s (± 0.47%) |
9.57s (± 0.55%) |
-0.18s (- 1.89%) |
9.49s |
9.75s |
| Monaco - node (v14.15.1, x64) |
| Memory used |
314,673k (± 0.04%) |
313,670k (± 0.01%) |
-1,003k (- 0.32%) |
313,591k |
313,756k |
| Parse Time |
1.56s (± 0.72%) |
1.56s (± 0.22%) |
-0.00s (- 0.26%) |
1.55s |
1.56s |
| Bind Time |
0.63s (± 0.47%) |
0.63s (± 0.54%) |
+0.00s (+ 0.16%) |
0.63s |
0.64s |
| Check Time |
5.17s (± 0.49%) |
5.23s (± 0.45%) |
+0.06s (+ 1.12%) |
5.18s |
5.27s |
| Emit Time |
2.87s (± 0.71%) |
2.84s (± 0.88%) |
-0.03s (- 1.18%) |
2.79s |
2.90s |
| Total Time |
10.24s (± 0.46%) |
10.26s (± 0.41%) |
+0.02s (+ 0.19%) |
10.17s |
10.34s |
| TFS - node (v14.15.1, x64) |
| Memory used |
279,378k (± 0.01%) |
278,277k (± 0.01%) |
-1,102k (- 0.39%) |
278,225k |
278,319k |
| Parse Time |
1.34s (± 1.74%) |
1.32s (± 0.76%) |
-0.02s (- 1.34%) |
1.30s |
1.34s |
| Bind Time |
0.59s (± 0.98%) |
0.59s (± 0.76%) |
-0.00s (- 0.34%) |
0.58s |
0.60s |
| Check Time |
5.10s (± 0.34%) |
4.98s (± 0.38%) |
-0.12s (- 2.27%) |
4.95s |
5.02s |
| Emit Time |
3.08s (± 0.72%) |
3.04s (± 1.55%) |
-0.05s (- 1.56%) |
2.87s |
3.10s |
| Total Time |
10.11s (± 0.44%) |
9.93s (± 0.52%) |
-0.18s (- 1.77%) |
9.77s |
10.02s |
| material-ui - node (v14.15.1, x64) |
| Memory used |
430,804k (± 0.01%) |
430,786k (± 0.01%) |
-18k (- 0.00%) |
430,715k |
430,843k |
| Parse Time |
1.86s (± 0.84%) |
1.85s (± 0.40%) |
-0.01s (- 0.54%) |
1.84s |
1.87s |
| Bind Time |
0.54s (± 0.69%) |
0.53s (± 0.90%) |
-0.01s (- 1.50%) |
0.52s |
0.54s |
| Check Time |
12.33s (± 0.79%) |
12.48s (± 0.41%) |
+0.15s (+ 1.18%) |
12.34s |
12.60s |
| Emit Time |
0.00s (± 0.00%) |
0.00s (± 0.00%) |
0.00s ( NaN%) |
0.00s |
0.00s |
| Total Time |
14.73s (± 0.63%) |
14.86s (± 0.38%) |
+0.13s (+ 0.87%) |
14.72s |
15.01s |
| xstate - node (v14.15.1, x64) |
| Memory used |
504,601k (± 0.02%) |
504,463k (± 0.01%) |
-138k (- 0.03%) |
504,333k |
504,599k |
| Parse Time |
2.56s (± 0.35%) |
2.57s (± 0.41%) |
+0.00s (+ 0.20%) |
2.54s |
2.59s |
| Bind Time |
0.84s (± 0.66%) |
0.84s (± 0.44%) |
-0.00s (- 0.24%) |
0.83s |
0.84s |
| Check Time |
1.48s (± 0.65%) |
1.46s (± 0.42%) |
-0.01s (- 0.95%) |
1.45s |
1.48s |
| Emit Time |
0.07s (± 0.00%) |
0.07s (± 0.00%) |
0.00s ( 0.00%) |
0.07s |
0.07s |
| Total Time |
4.94s (± 0.32%) |
4.93s (± 0.19%) |
-0.01s (- 0.16%) |
4.91s |
4.95s |
System
| Machine Name | ts-ci-ubuntu |
| Platform | linux 5.4.0-131-generic |
| Architecture | x64 |
| Available Memory | 16 GB |
| Available Memory | 15 GB |
| CPUs | 4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz |
Hosts
- node (v18.10.0, x64)
- node (v16.17.1, x64)
- node (v14.15.1, x64)
Scenarios
- Angular - node (v18.10.0, x64)
- Angular - node (v16.17.1, x64)
- Angular - node (v14.15.1, x64)
- Compiler-Unions - node (v18.10.0, x64)
- Compiler-Unions - node (v16.17.1, x64)
- Compiler-Unions - node (v14.15.1, x64)
- Monaco - node (v18.10.0, x64)
- Monaco - node (v16.17.1, x64)
- Monaco - node (v14.15.1, x64)
- TFS - node (v18.10.0, x64)
- TFS - node (v16.17.1, x64)
- TFS - node (v14.15.1, x64)
- material-ui - node (v18.10.0, x64)
- material-ui - node (v16.17.1, x64)
- material-ui - node (v14.15.1, x64)
- xstate - node (v18.10.0, x64)
- xstate - node (v16.17.1, x64)
- xstate - node (v14.15.1, x64)
| Benchmark |
Name |
Iterations |
| Current |
51865 |
10 |
| Baseline |
main |
10 |
TSServer
Comparison Report - main..51865
| Metric |
main |
51865 |
Delta |
Best |
Worst |
| Compiler-UnionsTSServer - node (v18.10.0, x64) |
| Req 1 - updateOpen |
1,056ms (± 0.76%) |
1,051ms (± 1.16%) |
-4ms (- 0.39%) |
1,028ms |
1,084ms |
| Req 2 - geterr |
2,586ms (± 0.69%) |
2,531ms (± 0.52%) |
-55ms (- 2.14%) |
2,514ms |
2,581ms |
| Req 3 - references |
166ms (± 0.73%) |
160ms (± 0.94%) |
🟩-6ms (- 3.62%) |
156ms |
162ms |
| Req 4 - navto |
138ms (± 0.83%) |
137ms (± 0.74%) |
-2ms (- 1.09%) |
134ms |
139ms |
| Req 5 - completionInfo count |
1,356 (± 0.00%) |
1,356 (± 0.00%) |
0 ( 0.00%) |
1,356 |
1,356 |
| Req 5 - completionInfo |
61ms (± 3.14%) |
60ms (± 2.57%) |
-1ms (- 1.96%) |
57ms |
62ms |
| CompilerTSServer - node (v18.10.0, x64) |
| Req 1 - updateOpen |
1,099ms (± 0.94%) |
1,106ms (± 0.28%) |
+8ms (+ 0.72%) |
1,100ms |
1,112ms |
| Req 2 - geterr |
1,601ms (± 0.54%) |
1,574ms (± 0.52%) |
-27ms (- 1.69%) |
1,560ms |
1,597ms |
| Req 3 - references |
169ms (± 1.15%) |
163ms (± 0.46%) |
🟩-6ms (- 3.60%) |
162ms |
165ms |
| Req 4 - navto |
151ms (± 0.90%) |
150ms (± 0.24%) |
-1ms (- 0.80%) |
149ms |
150ms |
| Req 5 - completionInfo count |
1,518 (± 0.00%) |
1,518 (± 0.00%) |
0 ( 0.00%) |
1,518 |
1,518 |
| Req 5 - completionInfo |
53ms (± 1.69%) |
52ms (± 1.34%) |
-1ms (- 0.95%) |
51ms |
54ms |
| xstateTSServer - node (v18.10.0, x64) |
| Req 1 - updateOpen |
1,508ms (± 0.98%) |
1,505ms (± 0.92%) |
-3ms (- 0.21%) |
1,478ms |
1,538ms |
| Req 2 - geterr |
555ms (± 0.84%) |
554ms (± 0.62%) |
-2ms (- 0.27%) |
547ms |
561ms |
| Req 3 - references |
59ms (± 2.47%) |
58ms (± 2.21%) |
-0ms (- 0.68%) |
57ms |
63ms |
| Req 4 - navto |
195ms (± 1.00%) |
196ms (± 1.06%) |
+0ms (+ 0.20%) |
192ms |
202ms |
| Req 5 - completionInfo count |
3,154 (± 0.00%) |
3,154 (± 0.00%) |
0 ( 0.00%) |
3,154 |
3,154 |
| Req 5 - completionInfo |
214ms (± 1.40%) |
211ms (± 1.03%) |
-3ms (- 1.49%) |
205ms |
217ms |
| Compiler-UnionsTSServer - node (v16.17.1, x64) |
| Req 1 - updateOpen |
1,306ms (± 0.60%) |
1,295ms (± 0.41%) |
-11ms (- 0.86%) |
1,286ms |
1,310ms |
| Req 2 - geterr |
3,221ms (± 0.68%) |
3,154ms (± 0.52%) |
-67ms (- 2.09%) |
3,112ms |
3,176ms |
| Req 3 - references |
191ms (± 0.65%) |
186ms (± 0.71%) |
-5ms (- 2.56%) |
183ms |
189ms |
| Req 4 - navto |
151ms (± 0.72%) |
153ms (± 1.04%) |
+2ms (+ 1.32%) |
150ms |
157ms |
| Req 5 - completionInfo count |
1,356 (± 0.00%) |
1,356 (± 0.00%) |
0 ( 0.00%) |
1,356 |
1,356 |
| Req 5 - completionInfo |
60ms (± 2.45%) |
59ms (± 2.40%) |
-2ms (- 2.49%) |
56ms |
62ms |
| CompilerTSServer - node (v16.17.1, x64) |
| Req 1 - updateOpen |
1,380ms (± 0.67%) |
1,378ms (± 0.76%) |
-3ms (- 0.19%) |
1,360ms |
1,402ms |
| Req 2 - geterr |
2,103ms (± 0.40%) |
2,062ms (± 0.43%) |
-41ms (- 1.95%) |
2,042ms |
2,086ms |
| Req 3 - references |
199ms (± 0.52%) |
192ms (± 0.38%) |
🟩-7ms (- 3.32%) |
191ms |
194ms |
| Req 4 - navto |
166ms (± 1.09%) |
165ms (± 0.90%) |
-2ms (- 0.96%) |
162ms |
168ms |
| Req 5 - completionInfo count |
1,518 (± 0.00%) |
1,518 (± 0.00%) |
0 ( 0.00%) |
1,518 |
1,518 |
| Req 5 - completionInfo |
58ms (± 3.32%) |
55ms (± 1.26%) |
🟩-3ms (- 5.87%) |
53ms |
56ms |
| xstateTSServer - node (v16.17.1, x64) |
| Req 1 - updateOpen |
1,820ms (± 0.62%) |
1,820ms (± 0.31%) |
-0ms (- 0.02%) |
1,808ms |
1,833ms |
| Req 2 - geterr |
723ms (± 0.74%) |
719ms (± 0.76%) |
-3ms (- 0.44%) |
707ms |
728ms |
| Req 3 - references |
68ms (± 1.01%) |
69ms (± 2.10%) |
+1ms (+ 2.07%) |
67ms |
73ms |
| Req 4 - navto |
201ms (± 0.97%) |
198ms (± 1.21%) |
-3ms (- 1.45%) |
193ms |
203ms |
| Req 5 - completionInfo count |
3,154 (± 0.00%) |
3,154 (± 0.00%) |
0 ( 0.00%) |
3,154 |
3,154 |
| Req 5 - completionInfo |
254ms (± 0.80%) |
254ms (± 1.15%) |
-0ms (- 0.04%) |
248ms |
264ms |
| Compiler-UnionsTSServer - node (v14.15.1, x64) |
| Req 1 - updateOpen |
1,449ms (± 0.45%) |
1,451ms (± 0.31%) |
+1ms (+ 0.08%) |
1,443ms |
1,464ms |
| Req 2 - geterr |
3,450ms (± 0.53%) |
3,389ms (± 0.66%) |
-61ms (- 1.78%) |
3,352ms |
3,451ms |
| Req 3 - references |
207ms (± 0.73%) |
199ms (± 0.44%) |
🟩-8ms (- 4.06%) |
197ms |
201ms |
| Req 4 - navto |
164ms (± 0.88%) |
163ms (± 0.91%) |
-1ms (- 0.67%) |
160ms |
166ms |
| Req 5 - completionInfo count |
1,356 (± 0.00%) |
1,356 (± 0.00%) |
0 ( 0.00%) |
1,356 |
1,356 |
| Req 5 - completionInfo |
58ms (± 2.17%) |
61ms (± 6.58%) |
+3ms (+ 5.73%) |
57ms |
72ms |
| CompilerTSServer - node (v14.15.1, x64) |
| Req 1 - updateOpen |
1,526ms (± 0.59%) |
1,530ms (± 0.39%) |
+4ms (+ 0.28%) |
1,519ms |
1,542ms |
| Req 2 - geterr |
2,291ms (± 0.41%) |
2,242ms (± 0.21%) |
-49ms (- 2.15%) |
2,231ms |
2,250ms |
| Req 3 - references |
216ms (± 1.11%) |
211ms (± 0.82%) |
-5ms (- 2.46%) |
207ms |
215ms |
| Req 4 - navto |
174ms (± 0.86%) |
171ms (± 0.91%) |
-3ms (- 1.72%) |
168ms |
176ms |
| Req 5 - completionInfo count |
1,518 (± 0.00%) |
1,518 (± 0.00%) |
0 ( 0.00%) |
1,518 |
1,518 |
| Req 5 - completionInfo |
56ms (± 1.30%) |
56ms (± 0.72%) |
+0ms (+ 0.18%) |
55ms |
57ms |
| xstateTSServer - node (v14.15.1, x64) |
| Req 1 - updateOpen |
1,996ms (± 0.37%) |
1,993ms (± 0.33%) |
-3ms (- 0.15%) |
1,981ms |
2,014ms |
| Req 2 - geterr |
746ms (± 0.30%) |
746ms (± 0.55%) |
-0ms (- 0.01%) |
735ms |
754ms |
| Req 3 - references |
72ms (± 1.31%) |
72ms (± 0.86%) |
-0ms (- 0.41%) |
71ms |
74ms |
| Req 4 - navto |
218ms (± 0.55%) |
218ms (± 0.40%) |
-0ms (- 0.09%) |
217ms |
220ms |
| Req 5 - completionInfo count |
3,154 (± 0.00%) |
3,154 (± 0.00%) |
0 ( 0.00%) |
3,154 |
3,154 |
| Req 5 - completionInfo |
270ms (± 0.56%) |
270ms (± 0.76%) |
-1ms (- 0.19%) |
267ms |
277ms |
System
| Machine Name | ts-ci-ubuntu |
| Platform | linux 5.4.0-131-generic |
| Architecture | x64 |
| Available Memory | 16 GB |
| Available Memory | 15 GB |
| CPUs | 4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz |
Hosts
- node (v18.10.0, x64)
- node (v16.17.1, x64)
- node (v14.15.1, x64)
Scenarios
- Compiler-UnionsTSServer - node (v18.10.0, x64)
- Compiler-UnionsTSServer - node (v16.17.1, x64)
- Compiler-UnionsTSServer - node (v14.15.1, x64)
- CompilerTSServer - node (v18.10.0, x64)
- CompilerTSServer - node (v16.17.1, x64)
- CompilerTSServer - node (v14.15.1, x64)
- xstateTSServer - node (v18.10.0, x64)
- xstateTSServer - node (v16.17.1, x64)
- xstateTSServer - node (v14.15.1, x64)
| Benchmark |
Name |
Iterations |
| Current |
51865 |
10 |
| Baseline |
main |
10 |
Startup
Comparison Report - main..51865
| Metric |
main |
51865 |
Delta |
Best |
Worst |
| tsc-startup - node (v16.17.1, x64) |
| Execution time |
118.71ms (± 0.52%) |
118.47ms (± 0.45%) |
-0.24ms (- 0.20%) |
115.83ms |
124.48ms |
| tsserver-startup - node (v16.17.1, x64) |
| Execution time |
198.83ms (± 0.44%) |
198.31ms (± 0.32%) |
-0.52ms (- 0.26%) |
194.93ms |
205.74ms |
| tsserverlibrary-startup - node (v16.17.1, x64) |
| Execution time |
194.52ms (± 0.45%) |
192.92ms (± 0.34%) |
-1.60ms (- 0.82%) |
189.67ms |
202.20ms |
| typescript-startup - node (v16.17.1, x64) |
| Execution time |
178.06ms (± 0.38%) |
178.61ms (± 0.42%) |
+0.55ms (+ 0.31%) |
174.97ms |
186.48ms |
System
| Machine Name | ts-ci-ubuntu |
| Platform | linux 5.4.0-131-generic |
| Architecture | x64 |
| Available Memory | 16 GB |
| Available Memory | 15 GB |
| CPUs | 4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz |
Scenarios
- tsc-startup - node (v16.17.1, x64)
- tsserver-startup - node (v16.17.1, x64)
- tsserverlibrary-startup - node (v16.17.1, x64)
- typescript-startup - node (v16.17.1, x64)
| Benchmark |
Name |
Iterations |
| Current |
51865 |
10 |
| Baseline |
main |
10 |
Developer Information:Download Benchmark
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
Hey Ryan Cavanaugh (@RyanCavanaugh), I've packed this into an installable tgz. You can install it for testing by referencing it in your package.json like so:
{
"devDependencies": {
"typescript": "https://typescript.visualstudio.com/cf7ac146-d525-443c-b23c-0d58337efebc/_apis/build/builds/140211/artifacts?artifactName=tgz&fileId=CA3B45CC535782C19A9298B874660B26676FB269A6536FD945B1E1CBC0B5671E02&fileName=/typescript-5.0.0-insiders.20221212.tgz"
}
}
and then running npm install.
There is also a playground for this build and an npm module you can use via "typescript": "npm:@typescript-deploys/[email protected]".;
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
Anders Hejlsberg (@ahejlsberg)
The results of the perf run you requested are in!
Here they are:
Comparison Report - main..51865
| Metric |
main |
51865 |
Delta |
Best |
Worst |
| Angular - node (v16.17.1, x64) |
| Memory used |
340,488k (± 0.02%) |
339,603k (± 0.02%) |
-886k (- 0.26%) |
339,389k |
339,673k |
| Parse Time |
1.85s (± 0.55%) |
1.87s (± 0.59%) |
+0.02s (+ 1.24%) |
1.84s |
1.89s |
| Bind Time |
0.64s (± 0.90%) |
0.64s (± 0.56%) |
+0.00s (+ 0.16%) |
0.64s |
0.65s |
| Check Time |
5.16s (± 0.64%) |
5.13s (± 0.41%) |
-0.03s (- 0.68%) |
5.09s |
5.17s |
| Emit Time |
5.06s (± 1.14%) |
5.09s (± 0.54%) |
+0.03s (+ 0.67%) |
5.02s |
5.16s |
| Total Time |
12.71s (± 0.62%) |
12.74s (± 0.41%) |
+0.02s (+ 0.20%) |
12.64s |
12.87s |
| Compiler-Unions - node (v16.17.1, x64) |
| Memory used |
188,320k (± 0.66%) |
186,500k (± 0.55%) |
-1,820k (- 0.97%) |
185,754k |
189,388k |
| Parse Time |
0.79s (± 1.20%) |
0.79s (± 0.94%) |
+0.01s (+ 0.76%) |
0.78s |
0.81s |
| Bind Time |
0.42s (± 0.89%) |
0.42s (± 1.23%) |
+0.01s (+ 1.45%) |
0.41s |
0.43s |
| Check Time |
6.04s (± 0.51%) |
5.98s (± 0.87%) |
-0.06s (- 1.06%) |
5.85s |
6.07s |
| Emit Time |
1.94s (± 0.73%) |
1.92s (± 0.77%) |
-0.01s (- 0.72%) |
1.90s |
1.97s |
| Total Time |
9.19s (± 0.37%) |
9.12s (± 0.66%) |
-0.07s (- 0.74%) |
8.96s |
9.22s |
| Monaco - node (v16.17.1, x64) |
| Memory used |
319,729k (± 0.01%) |
318,830k (± 0.01%) |
-899k (- 0.28%) |
318,769k |
318,926k |
| Parse Time |
1.40s (± 0.50%) |
1.42s (± 0.71%) |
+0.02s (+ 1.14%) |
1.40s |
1.44s |
| Bind Time |
0.59s (± 0.76%) |
0.59s (± 0.50%) |
+0.00s (+ 0.68%) |
0.59s |
0.60s |
| Check Time |
4.85s (± 0.69%) |
4.93s (± 0.37%) |
+0.08s (+ 1.59%) |
4.87s |
4.96s |
| Emit Time |
2.71s (± 0.59%) |
2.70s (± 0.60%) |
-0.01s (- 0.33%) |
2.66s |
2.73s |
| Total Time |
9.55s (± 0.49%) |
9.64s (± 0.39%) |
+0.09s (+ 0.98%) |
9.53s |
9.70s |
| TFS - node (v16.17.1, x64) |
| Memory used |
282,309k (± 0.01%) |
281,279k (± 0.00%) |
-1,031k (- 0.37%) |
281,258k |
281,296k |
| Parse Time |
1.16s (± 0.94%) |
1.16s (± 0.91%) |
+0.01s (+ 0.52%) |
1.15s |
1.20s |
| Bind Time |
0.64s (± 4.33%) |
0.65s (± 4.70%) |
+0.01s (+ 1.56%) |
0.58s |
0.70s |
| Check Time |
4.74s (± 0.57%) |
4.68s (± 0.39%) |
-0.06s (- 1.26%) |
4.64s |
4.72s |
| Emit Time |
2.76s (± 2.15%) |
2.74s (± 1.88%) |
-0.01s (- 0.51%) |
2.63s |
2.83s |
| Total Time |
9.30s (± 0.68%) |
9.24s (± 0.59%) |
-0.06s (- 0.62%) |
9.08s |
9.32s |
| material-ui - node (v16.17.1, x64) |
| Memory used |
435,352k (± 0.01%) |
435,351k (± 0.01%) |
-1k (- 0.00%) |
435,292k |
435,451k |
| Parse Time |
1.61s (± 0.40%) |
1.63s (± 0.61%) |
+0.02s (+ 1.30%) |
1.62s |
1.66s |
| Bind Time |
0.50s (± 1.04%) |
0.51s (± 1.09%) |
+0.01s (+ 1.40%) |
0.50s |
0.52s |
| Check Time |
11.75s (± 0.58%) |
12.14s (± 0.71%) |
+0.39s (+ 3.31%) |
11.95s |
12.30s |
| Emit Time |
0.00s (± 0.00%) |
0.00s (± 0.00%) |
0.00s ( NaN%) |
0.00s |
0.00s |
| Total Time |
13.87s (± 0.51%) |
14.29s (± 0.64%) |
+0.42s (+ 2.99%) |
14.08s |
14.46s |
| xstate - node (v16.17.1, x64) |
| Memory used |
516,243k (± 0.01%) |
516,312k (± 0.01%) |
+70k (+ 0.01%) |
516,214k |
516,489k |
| Parse Time |
2.26s (± 0.29%) |
2.29s (± 0.41%) |
+0.03s (+ 1.41%) |
2.27s |
2.31s |
| Bind Time |
0.82s (± 0.75%) |
0.83s (± 1.39%) |
+0.01s (+ 1.58%) |
0.82s |
0.88s |
| Check Time |
1.35s (± 0.59%) |
1.35s (± 0.81%) |
0.00s ( 0.00%) |
1.32s |
1.37s |
| Emit Time |
0.06s (± 0.00%) |
0.06s (± 0.00%) |
0.00s ( 0.00%) |
0.06s |
0.06s |
| Total Time |
4.50s (± 0.27%) |
4.54s (± 0.34%) |
+0.04s (+ 0.80%) |
4.51s |
4.59s |
System
| Machine Name | ts-ci-ubuntu |
| Platform | linux 5.4.0-131-generic |
| Architecture | x64 |
| Available Memory | 16 GB |
| Available Memory | 15 GB |
| CPUs | 4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz |
Scenarios
- Angular - node (v16.17.1, x64)
- Compiler-Unions - node (v16.17.1, x64)
- Monaco - node (v16.17.1, x64)
- TFS - node (v16.17.1, x64)
- material-ui - node (v16.17.1, x64)
- xstate - node (v16.17.1, x64)
| Benchmark |
Name |
Iterations |
| Current |
51865 |
10 |
| Baseline |
main |
10 |
Developer Information:Download Benchmark
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Feb 28, 2023
|
This is a great feature. Would you consider allowing it for type aliases as well?
Example use case: Automattic/mongoose#12782
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
Phillip Huang (@JavaScriptBach) huh? There's no straightforward correspondence from this feature to something that would apply to type aliases. const type parameters in generic functions change the interpretation of objects in expression-space, but type aliases operate entirely in type-space.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
Ryan Cavanaugh (@RyanCavanaugh) My point is that I have generic type aliases that expect to take in const type parameters, e.g. something like
It would be great to be able to type T as a const parameter instead of requiring all callers to specify as const. I can't speak for implementation, but I think supporting const type parameters for type aliases would be useful for the same reasons that they're useful today for functions, methods, and classes.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
It would be great to be able to type T as a const parameter instead of requiring all callers to specify as const
Again, not understanding. You can't write this, it's syntactically illegal:
type X = Foo<{ x: 3 } as const>;
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Jan 5, 2024
This was referenced Jun 3, 2024
Facebook Community Bot (facebook-github-bot)
pushed a commit
to meta/hermes
that referenced
this pull request
Dec 18, 2024
Summary:
Adds support for [`const` modifier on type parameters](microsoft/TypeScript#51865). E.g.
```
function foo<const T>(x: T): [T] {...}
```
We parse an optional `const` keyword right before parsing the variance of a type parameter.
```
cd ~/fbsource/xplat/hermes/unsupported/tools/rustgen
buck run //xplat/hermes/unsupported/tools/rustgen:rustgen -- ffi > ../../juno/crates/hermes/src/parser/generated_ffi.rs
buck run //xplat/hermes/unsupported/tools/rustgen:rustgen -- cvt > ../../juno/crates/juno/src/hparser/generated_cvt.rs
```
Reviewed By: avp
Differential Revision: D66739150
fbshipit-source-id: 66411ee424cea3ab19a1f8c2ab09d80abdf2737a
Facebook Community Bot (facebook-github-bot)
pushed a commit
to meta/hermes
that referenced
this pull request
Jan 7, 2025
Summary:
Original Author: [email protected]
Original Git: 3a24531
Original Reviewed By: avp
Original Revision: D66739150
Adds support for [`const` modifier on type parameters](microsoft/TypeScript#51865). E.g.
```
function foo<const T>(x: T): [T] {...}
```
We parse an optional `const` keyword right before parsing the variance of a type parameter.
```
cd ~/fbsource/xplat/hermes/unsupported/tools/rustgen
buck run //xplat/hermes/unsupported/tools/rustgen:rustgen -- ffi > ../../juno/crates/hermes/src/parser/generated_ffi.rs
buck run //xplat/hermes/unsupported/tools/rustgen:rustgen -- cvt > ../../juno/crates/juno/src/hparser/generated_cvt.rs
```
Reviewed By: fbmal7
Differential Revision: D67867901
fbshipit-source-id: 4683aee20adfed18e0a6343b4fdacf8e016015df
Vladimir Morozov (vmoroz)
pushed a commit
to vmoroz/microsoft-hermes-windows
that referenced
this pull request
Apr 17, 2025
Summary:
Adds support for [`const` modifier on type parameters](microsoft/TypeScript#51865). E.g.
```
function foo<const T>(x: T): [T] {...}
```
We parse an optional `const` keyword right before parsing the variance of a type parameter.
```
cd ~/fbsource/xplat/hermes/unsupported/tools/rustgen
buck run //xplat/hermes/unsupported/tools/rustgen:rustgen -- ffi > ../../juno/crates/hermes/src/parser/generated_ffi.rs
buck run //xplat/hermes/unsupported/tools/rustgen:rustgen -- cvt > ../../juno/crates/juno/src/hparser/generated_cvt.rs
```
Reviewed By: avp
Differential Revision: D66739150
fbshipit-source-id: 66411ee424cea3ab19a1f8c2ab09d80abdf2737a
Vladimir Morozov (vmoroz)
pushed a commit
to vmoroz/microsoft-hermes-windows
that referenced
this pull request
Apr 17, 2025
Summary:
JS changes for support for [`const` modifier on type parameters](microsoft/TypeScript#51865). E.g.
```
function foo<const T>(x: T): [T] {...}
```
Reviewed By: SamChou19815
Differential Revision: D66856337
fbshipit-source-id: 109911abd8400b97a35d20d611b376dd12c46bed
Reviewers
+2 more reviewers
Reviewers whose approvals may not affect merge requirements
Uh oh!
There was an error while loading. Please reload this page.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
|