microsoft / microsoft/TypeScript

Modifier for bitflag enums

Abierto
#42,521 3 comentarios 7 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

In Discussion Suggestion
Lenguaje dominante
Go
Estrellas
111k
Forks
14.3k
Merge medio
2 d 4 h
PR fusionados (30 d)
132

Descripción

Consider the following code

export enum ScriptKind {
  Unknown = 0,
  JS = 1,
  JSX = 2,
  TS = 3,
  TSX = 4,
  External = 5,
  JSON = 6,
}

If a user tries to pass along the expression ScriptKind.JSX | ScriptKind.TSX to a parameter that expects a ScriptKind, then will end up constructing a value equal to ScriptKind.JSON.

Really, the user should have been told that this enum wasn't intended to be used in bitwise operations! But unfortunately, TypeScript doesn't catch this because you can assign any number to any numeric enum.

One could imagine a mode that prevents both the construction and the assignment for certain enums. In this mode, an enum has to be declared with the bitflags modifier if it wants to opt in to these types of bitwise operations, and to allow number to be assignable to that enum.

bitflags enum SymbolFlags {
    // ...
}

Alternatively, this could be something more akin to /** @deprecated */ or /** @internal */.

/// @bitflags
enum SymbolFlags {
    // ...
}

This is in some part inspired by Rust's bitflags macro.

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

No se especifican archivos, pruebas ni puntos de entrada. Empieza revisando el modificador bitflags propuesto y la anotación alternativa; después, define las reglas previstas para la construcción, la asignación y las operaciones a nivel de bits; se considera terminado cuando se haya seleccionado un diseño y se hayan acordado los diagnósticos correspondientes y la semántica de enum.

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
30/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.