microsoft / microsoft/TypeScript
function members of primitives/builtins are not read-only
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.4k
- Ø Merge
- 1 T. 19 Std.
- Gemergte PRs (30 T.)
- 117
Beschreibung
🔎 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.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit dem verknüpften TypeScript Playground-Beispiel und reproduziere die Zuweisungen unter --strict mit tsc. Verfolge, wie Zuweisungen an primitive Member geprüft werden, und füge dann die Ablehnung unzulässiger Schreibvorgänge an builtin functions hinzu, während legale JavaScript-Fälle wie array.length erhalten bleiben; füge Compiler-Tests hinzu oder aktualisiere sie, um die Beispiele abzudecken.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- javascript, typescript
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 35/100