microsoft / microsoft/TypeScript
Form controller bricks intellsense for rest of session
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.3k
- Merge moyen
- 2 j 4 h
- PR mergées (30 j)
- 132
Description
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
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par l’exemple React/TypeScript signalé dans VS Code Insiders, en comparant le petit type générique avec LargeInterface et son tableau de LargeObject profondément hérité. Réduisez le type jusqu’à ce que le blocage d’IntelliSense soit toujours reproductible, puis vérifiez que le cas réduit ne laisse plus IntelliSense bloqué sur « Loading IntelliSense status ».
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- react, typescript, vite
- Domaine
- devtools
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 30/100