microsoft / microsoft/TypeScript
function members of primitives/builtins are not read-only
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
🔎 Search Terms
builtin number string member readonly
🕗 Version & Regression Information
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about "Common Bugs that arent Bugs"
⏯ Playground Link
💻 Code
let x = 2;
x.valueOf = (2).valueOf;
let y = "hello";
y.charAt = y.charAt;
🙁 Actual behavior
Code compiles just fine, even with --strict enabled.
Executing JavaScript fails:
can't assign to property "valueOf" on 2: not an object
🙂 Expected behavior
Should be rejected by tsc as read-only assignment.
Additional information about the issue
Seems similar in nature to https://github.com/microsoft/TypeScript/issues/49113
Notably, array.length is allowed (because its legal in JS) but string.length is not (because it is illegal in JS). Since assigning to builtin functions is also illegal, this should be flagged by tsc.
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 con el ejemplo enlazado de TypeScript Playground y reproduce las asignaciones con --strict usando tsc. Rastrea cómo se comprueban las asignaciones a miembros primitivos y, después, añade el rechazo de escrituras ilegales en builtin functions, conservando casos legales de JavaScript como array.length; añade o actualiza las pruebas del compilador para cubrir los ejemplos.
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
- Bien especificado
- Aptitud para principiantes
- 35/100