microsoft / microsoft/TypeScript
JavaScript Intellisense doesn't detect types of properties defined in async constructors
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.3k
- Merge medio
- 2 d 4 h
- PR fusionados (30 d)
- 132
Descripción
# JavaScript Intellisense doesn't detect types of properties defined in async constructors
## Summary
A popular asynchronous constructor pattern in JavaScript is using an async IIFE in the constructor which returns `this` at the end. E.g.
```javascript
constructor() {
return (async () => {
this.#x = 42;
this.y = 42;
return this;
})();
}
```
However, VSCode Intellisense does not infer the types for properties defined in such a constructor.
## Steps to reproduce
1. Open a blank JavaScript, and paste in the following code:
```javascript
class Class1 {
#x;
y;
constructor() {
this.#x = 42;
this.y = 42;
}
}
class Class2 {
#x;
y;
constructor() {
return (async () => {
this.#x = 42;
this.y = 42;
return this;
})();
}
}
```
2. Hover over `y` in `Class1` and observe the tooltip: `(property) Class1.y: number`
3. Hover over `y` in `Class2` and observe the tooltip: `(property) Class2.y: any`
Does this issue occur when all extensions are disabled?: **Yes**
- VS Code Version: 1.97.0
- OS Version: Windows 11
Guía de contribución
Línea de trabajo
Reproduce el problema en VS Code con los ejemplos proporcionados de Class1 y Class2 y compare los tipos mostrados al pasar el cursor con las extensiones deshabilitadas. Rastree el procesamiento de JavaScript IntelliSense para constructores asíncronos en el servicio de lenguaje de TypeScript y, después, añada cobertura de regresión; se considera terminado cuando Class2.y se infiere como number, igual que Class1.y.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- javascript, typescript, vscode
- Área
- developer-experience, tooling
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 42/100