microsoft / microsoft/TypeScript

__metadata should register function that returns type instead of literal type

Abierto
#19,563 7 comentarios 7 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Domain: Decorators Revisit Suggestion
Lenguaje dominante
Go
Estrellas
111k
Forks
14.4k
Merge medio
1 d 19 h
PR fusionados (30 d)
117

Descripción

Imagine case with circular dependencies

class Car {
  @Field owner: Person // !!! Error: Person is not defined.
}

class Person {
  @Field car: Car;
}

// car has owner, owner has car

Typescript metadata would be emitted here like

eg.
__metadata('design:type', Person).

As Person is injected for the first time before Person class is initialized, it will result with ReferenceError saying Person is not defined.

If it'd emit metadata like:
__metadata('design:type', () => Person)

it'd be fine.

Later on, when using Reflect.metadata, it would also need to call meta function instead of just returning the type.

If you think it's good idea, do you have any suggestions about starting point for PR that would implement this change?

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

Empieza rastreando la ruta del compilador de TypeScript que emite metadatos de decoradores y, después, inspecciona cómo Reflect.metadata consume el valor emitido. Se considera terminado cuando el ejemplo circular Car/Person evita el ReferenceError de inicialización y los consumidores de metadatos invocan la función de tipo diferida; el payload no menciona archivos ni tests.

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

Evaluación

Stack tecnológico
typescript
Área
compilers
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.