microsoft / microsoft/TypeScript

Confusing error on computed name class member

Aperta
#61,510 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Domain: Error Messages Help Wanted Possible Improvement
Lingua principale
Go
Stelle
111k
Fork
14.3k
Merge medio
2g 4h
PR unite (30g)
132

Descrizione

### 🔎 Search Terms

late bindable computed symbol class member

### 🕗 Version & Regression Information

- This is the behavior in every version I tried

### ⏯ Playground Link

https://www.typescriptlang.org/play/?target=99&lib=lib.esnext.d.ts&ts=5.9.0-dev.20250326#code/MYewdgzgLgBArmAlgRzgUwMoE8C2AjEAGwAYYBeGbfIgOgDMQAnACgCJWBKAbgCge6EwKInAwA5migBVJKky4CJZhwBcMKFgAOaEHXiz0VRaQDePGDEaS4jMPpSGFRYrwC+fYIQCGECDADChBAAzDBmFgDaEtIG8tRKHAC65DCsdIiM0KxuPEA

### 💻 Code

```ts
const uniqueSymbol0 = Symbol.for("");

function getUniqueSymbol0(): typeof uniqueSymbol0 {
return uniqueSymbol0;
}

class Cls3 {
[getUniqueSymbol0()] = "first"; // A computed property name in a class property declaration must have a simple literal type or a 'unique symbol' type.(1166)
}
```

### 🙁 Actual behavior

The error is confusing because this expression has a `unique symbol` type already

### 🙂 Expected behavior

This error should mention more accurate late-bindable requirements. From the source code:
```ts
/**
* Indicates whether a declaration name is definitely late-bindable.
* A declaration name is only late-bindable if:
* - It is a `ComputedPropertyName`.
* - Its expression is an `Identifier` or either a `PropertyAccessExpression` an
* `ElementAccessExpression` consisting only of these same three types of nodes.
* - The type of its expression is a string or numeric literal type, or is a `unique symbol` type.
*/
```

### Additional information about the issue

_No response_

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia con l'esempio collegato di TypeScript Playground e il commento nel codice sorgente che descrive i nomi delle dichiarazioni che possono essere sicuramente associate in ritardo. Segui la diagnostica per la proprietà di classe calcolata e fai in modo che la sua formulazione rifletta i requisiti indicati per l'espressione e il tipo; verifica che l'esempio segnali l'errore più accurato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
typescript
Ambito
compilers
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.