microsoft / microsoft/TypeScript
Type hinting remains slow after version 5.9.2
่ฟๆฒกๆไบบ่ฎค้ข่ฟไธช Issueใ
- ไธป่ฆ่ฏญ่จ
- Go
- ๆๆ
- 111k
- ๆดพ็
- 14.3k
- ๅนณๅๅๅนถ
- 2 ๅคฉ 4 ๅฐๆถ
- 30 ๅคฉๅ ๅๅนถ PR
- 132
ๆ่ฟฐ
### ๐ Search Terms
I use windows 10+ vscode 1.104.1+typescript 5.9.2+
I used [valibot](https://github.com/fabian-hiller/valibot) (a library similar to zod) in my project
As the code increases, the prompting speed becomes slower and slower. Now it takes about 3 seconds to prompt once (5900x 6c12t)
I have also tried using `typescript-go` for hinting, but the speed is not fast either (it's a bit faster than the current one, but it still requires waiting)
### ๐ Version & Regression Information
This problem has always existed, and even after the optimization of types in 5.9.2, it is still slow
### โฏ Playground Link
_No response_
### ๐ป Code
a lot of code define
Approximately one thousand valibot functions were utilized (estimated value; as there are still some references)
like this
```ts
export const a= v.object({
selection: v.pipe(
v.optional(v.string()),
v.description('description'),
),
common: v.pipe(
v.optional(v.string()),
v.description('description'),
),
})
```
### ๐ Actual behavior
Every time I enter code, I have to wait a few seconds before any prompt appears
### ๐ Expected behavior
not slow
### Additional information about the issue
I use https://github.com/microsoft/typescript-analyze-trace print some log
I hope it will be helpful to you
```
Hot Spots
โโ Check file c:\code\my-project\script\metadata\config.ts (2364ms)
โโ Check variable declaration from (line 264, char 14) to (line 703, char 3) (2069ms)
โโ Check expression from (line 264, char 23) to (line 703, char 3) (2068ms)
โโ Check expression from (line 264, char 32) to (line 703, char 2) (2056ms)
โโ Check expression from (line 658, char 19) to (line 664, char 4) (1502ms)
โโ Check expression from (line 659, char 5) to (line 663, char 7) (1501ms)
โโ Check expression from (line 659, char 16) to (line 659, char 33) (1499ms)
โโ Compare types 47331 and 1049 (1487ms)
โโ Compare types 47331 and 942 (1486ms)
โโ Compare types 47342 and 1049 (876ms)
โ โโ Compare types 47342 and 942 (876ms)
โ โโ Compare types 47360 and 1049 (864ms)
โ โโ Compare types 47360 and 942 (864ms)
โ โโ {"id":47360,"kind":"GenericInstantiation","name":"OptionalSchema","instantiatedType":564,"typeArguments":[47359,10],"location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":6476,"char":1}}
โ โ โโ {"id":564,"kind":"GenericType","name":"OptionalSchema","typeArguments":[565,566],"location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":6476,"char":1}}
โ โ โ โโ {"id":565,"kind":"TypeParameter","name":"TWrapped","location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":6476,"char":26}}
โ โ โ โโ {"id":566,"kind":"TypeParameter","name":"TDefault","location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":6476,"char":93}}
โ โ โโ {"id":47359,"kind":"GenericInstantiation","name":"ObjectSchema","instantiatedType":858,"typeArguments":[47358,10],"location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":6241,"char":1}}
โ โ โ โโ {"id":858,"kind":"GenericType","name":"ObjectSchema","typeArguments":[859,860],"location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":6241,"char":1}}
โ โ โ โ โโ {"id":859,"kind":"TypeParameter","name":"TEntries","location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":6241,"char":24}}
โ โ โ โ โโ {"id":860,"kind":"TypeParameter","name":"TMessage","location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":6241,"char":56}}
โ โ โ โโ {"id":47358,"kind":"AnonymousType","location":{"path":"c:\code\my-project\node_modules\@cyia\llama\llama\define\index.d.ts","line":1075,"char":62}}
โ โ โ โโ {"id":10,"kind":"Intrinsic","name":"undefined"}
โ โ โโ {"id":10,"kind":"Intrinsic","name":"undefined"}
โ โโ {"id":942,"kind":"GenericInstantiation","name":"ExactOptionalSchema","instantiatedType":938,"typeArguments":[428,9],"location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":4509,"char":1}}
โ โโ {"id":938,"kind":"GenericType","name":"ExactOptionalSchema","typeArguments":[939,940],"location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":4509,"char":1}}
โ โ โโ {"id":939,"kind":"TypeParameter","name":"TWrapped","location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":4509,"char":31}}
โ โ โโ {"id":940,"kind":"TypeParameter","name":"TDefault","location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":4509,"char":98}}
โ โโ {"id":428,"kind":"GenericInstantiation","name":"BaseSchema","instantiatedType":419,"typeArguments":[9,9,427],"location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":3277,"char":1}}
โ โ โโ {"id":419,"kind":"GenericType","name":"BaseSchema","typeArguments":[420,421,422],"location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":3277,"char":1}}
โ โ โ โโ {"id":420,"kind":"TypeParameter","name":"TInput","location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":3277,"char":22}}
โ โ โ โโ {"id":421,"kind":"TypeParameter","name":"TOutput","location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":3277,"char":30}}
โ โ โ โโ {"id":422,"kind":"TypeParameter","name":"TIssue","location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":3277,"char":39}}
โ โ โโ {"id":9,"kind":"Intrinsic","name":"unknown"}
โ โ โโ {"id":427,"kind":"GenericInstantiation","name":"BaseIssue","instantiatedType":424,"typeArguments":[9],"location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":3850,"char":1}}
โ โ โโ {"id":424,"kind":"GenericType","name":"BaseIssue","typeArguments":[425],"location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":3850,"char":1}}
โ โ โ โโ {"id":425,"kind":"TypeParameter","name":"TInput","location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":3850,"char":21}}
โ โ โโ {"id":9,"kind":"Intrinsic","name":"unknown"}
โ โโ {"id":9,"kind":"Intrinsic","name":"unknown"}
โโ Compare types 129323 and 1049 (609ms)
โโ Compare types 129323 and 942 (609ms)
โโ Compare types 129332 and 1049 (605ms)
โโ Compare types 129332 and 942 (605ms)
โโ {"id":129332,"kind":"GenericInstantiation","name":"OptionalSchema","instantiatedType":564,"typeArguments":[129331,10],"location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":6476,"char":1}}
โ โโ {"id":564,"kind":"GenericType","name":"OptionalSchema","typeArguments":[565,566],"location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":6476,"char":1}}
โ โ โโ {"id":565,"kind":"TypeParameter","name":"TWrapped","location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":6476,"char":26}}
โ โ โโ {"id":566,"kind":"TypeParameter","name":"TDefault","location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":6476,"char":93}}
โ โโ {"id":129331,"kind":"GenericInstantiation","name":"ObjectSchema","instantiatedType":858,"typeArguments":[129330,10],"location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":6241,"char":1}}
โ โ โโ {"id":858,"kind":"GenericType","name":"ObjectSchema","typeArguments":[859,860],"location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":6241,"char":1}}
โ โ โ โโ {"id":859,"kind":"TypeParameter","name":"TEntries","location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":6241,"char":24}}
โ โ โ โโ {"id":860,"kind":"TypeParameter","name":"TMessage","location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":6241,"char":56}}
โ โ โโ {"id":129330,"kind":"AnonymousType","location":{"path":"c:\code\my-project\node_modules\@cyia\llama\llama\define\index.d.ts","line":11,"char":62}}
โ โ โโ {"id":10,"kind":"Intrinsic","name":"undefined"}
โ โโ {"id":10,"kind":"Intrinsic","name":"undefined"}
โโ {"id":942,"kind":"GenericInstantiation","name":"ExactOptionalSchema","instantiatedType":938,"typeArguments":[428,9],"location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":4509,"char":1}}
โโ {"id":938,"kind":"GenericType","name":"ExactOptionalSchema","typeArguments":[939,940],"location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":4509,"char":1}}
โ โโ {"id":939,"kind":"TypeParameter","name":"TWrapped","location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":4509,"char":31}}
โ โโ {"id":940,"kind":"TypeParameter","name":"TDefault","location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":4509,"char":98}}
โโ {"id":428,"kind":"GenericInstantiation","name":"BaseSchema","instantiatedType":419,"typeArguments":[9,9,427],"location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":3277,"char":1}}
โ โโ {"id":419,"kind":"GenericType","name":"BaseSchema","typeArguments":[420,421,422],"location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":3277,"char":1}}
โ โ โโ {"id":420,"kind":"TypeParameter","name":"TInput","location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":3277,"char":22}}
โ โ โโ {"id":421,"kind":"TypeParameter","name":"TOutput","location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":3277,"char":30}}
โ โ โโ {"id":422,"kind":"TypeParameter","name":"TIssue","location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":3277,"char":39}}
โ โโ {"id":9,"kind":"Intrinsic","name":"unknown"}
โ โโ {"id":427,"kind":"GenericInstantiation","name":"BaseIssue","instantiatedType":424,"typeArguments":[9],"location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":3850,"char":1}}
โ โโ {"id":424,"kind":"GenericType","name":"BaseIssue","typeArguments":[425],"location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":3850,"char":1}}
โ โ โโ {"id":425,"kind":"TypeParameter","name":"TInput","location":{"path":"c:\code\my-project\node_modules\valibot\dist\index.d.ts","line":3850,"char":21}}
โ โโ {"id":9,"kind":"Intrinsic","name":"unknown"}
โโ {"id":9,"kind":"Intrinsic","name":"unknown"}
Duplicate packages
โโ undici-types
โโ Version 6.21.0 from C:/code/my-project/node_modules/@types/node/node_modules/undici-types
โโ Version 5.26.5 from C:/code/my-project/node_modules/undici-types
```
่ดก็ฎๆๅ
ไป่ฟ้ๅผๅง
- ๅ ่ฏปๅฎๆดไธช Issue๏ผๅ่ฏป้กน็ฎ็่ดก็ฎๆๅใ
- ๅจ Issue ไธ็่จ่ฏดๆไฝ ่ฆๆฅๆ โโ ่ฟ่ฝ้ฟๅ ไธคไธชไบบๅๅๆ ท็ไบใ
- Fork ไปๅบ๏ผๅจไธไธชๅๆฏไธๅฎๆไฟฎๆนใ
- ๆไบค Pull Request๏ผๅนถๅจๆ่ฟฐ้ๅผ็จ่ฟไธช Issue ็ผๅทใ
่ฐ็ ๆนๅ
Reproduce the delay in the reported config.ts scenario with VS Code, TypeScript 5.9.2, and the Valibot declarations, then inspect the supplied typescript-analyze-trace output. Focus first on the reported checks involving OptionalSchema, ObjectSchema, and ExactOptionalSchema; done means identifying a TypeScript-side improvement and demonstrating faster prompting with a regression case.
็ฑ็ดขๅผๆจกๅๆ นๆฎ Issue ๅ ๅฎน็ๆใ
่ฏไผฐ
- ๆๆฏๆ
- typescript
- ้ขๅ
- compilers, developer-experience
- Issue ็ฑปๅ
- ็ผบ้ท
- ้พๅบฆ
- 4/5
- ้ข่ฎก่ๆถ
- 3-5 ๅคฉ
- ๆดป่ทๅบฆ
- ๅๆป
- ๆ่ฟฐๆธ ๆฐๅบฆ
- ้่ฆๆพๆธ
- ๆฐๆๅๅฅฝๅบฆ
- 28/100