microsoft / microsoft/TypeScript

Unable to mark JS functions as not being constructors (TS80002)

Abierto
#43,812 5 comentarios 5 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Awaiting More Feedback Suggestion
Lenguaje dominante
Go
Estrellas
111k
Forks
14.3k
Merge medio
1 d 19 h
PR fusionados (30 d)
117

Descripción

Bug Report

TS80002 ("This constructor function may be turned to a class declaration") is a useful tool, but, it often breaks syntax coloring and classification of functions for things like out-of-line event handlers. There seems to be no way to mark a function as "not a constructor" (would the @function JSDoc hint maybe serve this purpose?)

🔎 Search Terms

jsdoc typescript constructor ts80002

🕗 Version & Regression Information
  • This behavior was introduced after 3.6.2 at some point, and I reviewed the FAQ for entries about TS80002.
⏯ Playground Link

Playground link with relevant code

💻 Code
/**
 * @this {HTMLElement}
 * @param {MouseEvent} e
 */
function test(e)
{
    this.textContent = '500';
}

document.addEventListener('click', test);
🙁 Actual behavior

TypeScript marks the function test as a constructor for a type. As a consequence, too, VSCode marks it as a type, and not a function, which is confusing for navigation purposes.

🙂 Expected behavior

TypeScript should be able to detect that with a @this hint (or @function perhaps?) that this isn't a constructor.

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Reproduce el comportamiento en el TypeScript Playground enlazado con JavaScript y TS80002; después, investiga cómo afectan las indicaciones JSDoc @this y @function a la detección de constructores. Se considera completado cuando una anotación compatible o una ruta de inferencia compatible evita que la función se clasifique como constructor y restaura la clasificación de función esperada para la navegación del editor.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
javascript, typescript
Área
compilers, devtools
Tipo de issue
Error
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Tranquilo
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.