microsoft / microsoft/TypeScript
Form controller bricks intellsense for rest of session
还没有人认领这个 Issue。
- 主要语言
- Go
- 星标
- 111k
- 派生
- 14.3k
- 平均合并
- 2 天 4 小时
- 30 天内合并 PR
- 132
描述
Type: Bug
I have a scenario which is causing Intellisense to break (stuck on "Loading IntelliSense status" indefinitely), meaning I cannot continue development.
My situation:
I am creating a react project using react-hook-form to create a form for a complicated object, hence I am using [useFormContext](https://www.react-hook-form.com/api/useformcontext/) to allow me to nest react function components. My code is as follows:
```
import { Controller, useFormContext } from "react-hook-form";
import { LargeInterface } from "./somewhere";
interface smallDataStructure {
name: string
}
const ChannelForm: React.FC = () => {
const formControls = useFormContext(); // <--- this does not break vscode
// const formControls = useFormContext(); <-- this breaks vscode
return (
)
}
```
I have narrowed the problem down to giving the `useFormContext` a generic parameter (which is used to give a type to the field values) which is a very large interface made up of multiple layers of inheritence (I can provide further information on this when necessary). When I use a small interface as depicted above, there is no problem. When I change the code to use the data scructure I need, the line `` can no longer be written without VS bricking for the rest of the session, only fixing when I restart the application (this specifically happens when I write the "control={formControls.control}").
The technologies I am using:
- React.js with Vite
- typescript
- react-hook-form
The typescript engine appears to be unable to handle whatever problem is occurring here. The datastructure I am trying to use as a generic is complex and made up of multiple layers of inheritance, it includes mostly simple datatypes, but also an array of a user defined class objects. This is what is causing the problem! My "LargeInterface" interface looks as follows:
```
interface LargeInterface inherits MoreSimpleDatatypes {
objs: LargeObject[],
// ... other simple datatypes
}
```
where `LargeObject` is, as the name would suggest, a deeply inherited class. I've tried reproducing this with a simple class, but to no avail. There is something about my `LargeObject` in particular which it does not like. It is probably the case that I am not meant to be using a class as the FieldValues type, but nevertheless, vscode cannot provide the suitable error message in this scenario.
What I've tried:
- Change VS code version, use insiders
- COMPLETELY uninstall all VS code versions from my PC
- Deactivate all plugins
- Change ts version
- Recreate file
- Cleared any cache I could find
- Reclone repo
- Deactivate copilot
Help would be greatly appreciated as I cannot develop on VS code with this problem.
VS Code version: Code - Insiders 1.103.0-insider (994be4137aaf18f2703037311dd1c56a8446ef8b, 2025-08-01T20:53:15.562Z)
OS version: Windows_NT x64 10.0.19045
Modes:
System Info
|Item|Value|
|---|---|
|CPUs|AMD Ryzen 5 3600 6-Core Processor (12 x 3600)|
|GPU Status|2d_canvas: enabled
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: enabled
multiple_raster_threads: enabled_on
opengl: enabled_on
rasterization: enabled
raw_draw: disabled_off_ok
skia_graphite: disabled_off
trees_in_viz: disabled_off
video_decode: enabled
video_encode: enabled
vulkan: disabled_off
webgl: enabled
webgl2: enabled
webgpu: enabled
webnn: disabled_off|
|Load (avg)|undefined|
|Memory (System)|15.93GB (4.73GB free)|
|Process Argv|--crash-reporter-id cc3d998a-aad8-47bd-8ea7-f068b3586619|
|Screen Reader|no|
|VM|0%|
Extensions (5)
Extension|Author (truncated)|Version
---|---|---
vscode-containers|ms-|2.1.0
remote-containers|ms-|0.424.0
remote-wsl|ms-|0.99.0
code-spell-checker|str|4.2.3
vscode-icons|vsc|12.14.0
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
从 VS Code Insiders 中报告的 React/TypeScript 示例开始,将小型泛型与 LargeInterface 及其深层继承的 LargeObject 数组进行比较。缩减类型,直到 IntelliSense 挂起仍能复现,然后验证缩减后的案例不再让 IntelliSense 卡在“Loading IntelliSense status”。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- react, typescript, vite
- 领域
- devtools
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 30/100