microsoft / microsoft/TypeScript
JSDoc property on typedef can only extend `Object` type
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.4k
- Merge medio
- 1 d 19 h
- PR fusionados (30 d)
- 117
Descripción
TypeScript Version: 3.4.0-dev.201xxxxx
Search Terms: typedef jsdoc widen extend property
Code
/**
* @typedef {Array} A
* @property {string} a
*/
/**
* @type {A}
*/
var a;
a.a; // Property 'a' does not exist on type 'any[]'.
/**
* @typedef {any[]} B
* @property {string} b
*/
/**
* @type {B}
*/
var b;
b.b; // Property 'b' does not exist on type 'any[]'.
/**
* @typedef {{}} C
* @property {string} c
*/
/**
* @type {C}
*/
var c;
c.c; // Property 'c' does not exist on type '{}'.
/**
* @typedef {Object} O
* @property {string} o
*/
/**
* @type {O}
*/
var o;
o.o; // string
Expected behavior:
Other types to behave similarly? I thought non-alias typedefs would act like
type __X = {}; // from @typedef type expression
interface X extends __X {
x: string // from @property
}
Either way of making it not work for object or allowing it to work for other types seems reasonable.
Actual behavior: Object is treated as a special type that doesn't behave like other types. See comments in example for errors when using other types.
Playground Link: it is JSDoc, can't.
Related Issues: n/a
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza reproduciendo los ejemplos de JSDoc para typedefs basados en Array, any[], {}, y Object, comprobando cómo se aplica cada @property. Compara los diagnósticos observados con el comportamiento esperado descrito en el issue, y considera completado el trabajo cuando el comportamiento elegido esté cubierto por pruebas de regresión para los cuatro casos.
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