microsoft / microsoft/TypeScript

JSDoc comment on JS class property isn't inherited when derived class also initializes it

Abierto
#44,587 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Experience Enhancement Suggestion
Lenguaje dominante
Go
Estrellas
111k
Forks
14.4k
Merge medio
1 d 19 h
PR fusionados (30 d)
117

Descripción

Bug Report

When a JS class extends another, and members are overridden in the constructor, they will lose all of their documentation - even if they are compatible values.

🔎 Search Terms

jsdoc class es6 js extends

🕗 Version & Regression Information
  • This is the behavior in every version I tried, and I reviewed the FAQ for entries about JS / JSDoc
⏯ Playground Link

Playground link with relevant code

Note the type info when hovering over this.a in Derived's constructor, or a in the bottom line.

💻 Code
class Base
{
    constructor()
    {
        /** I am an integer! */
        this.a = 100;
    }
}

class Derived extends Base
{
    constructor()
    {
        super();

        this.a = 50;

// hover over this.a above to see the issue
    }
}

// hover over a to see the issue as well
new Derived().a
🙁 Actual behavior

a was overridden by Derived, even though it is a type match.

🙂 Expected behavior

While I can see the usefulness here if a was a different/incompatible type entirely, I would rather an error occur on, for instance, this.a = "str"; because a is a number, not a string, and for it to inherit the JSDoc properly. It seems like this.xxx in a constructor declares a new variable, even if it inherits one.

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

Comienza con el TypeScript Playground enlazado y reproduce el comportamiento al pasar el cursor sobre this.a en Derived y new Derived().a. Rastrea cómo se interpretan los constructores de clases de JavaScript y el comentario JSDoc, y verifica después que las sobrescrituras compatibles conservan la documentación y que las asignaciones incompatibles se diagnostican.

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

Evaluación

Stack tecnológico
javascript, typescript
Área
compilers
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.