microsoft / microsoft/TypeScript

Declaring index signature based on property type gives invalid error

Aperta
#30,982 1 commento 1 reazione 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Bug Domain: Indexed Access Types
Lingua principale
Go
Stelle
111k
Fork
14.3k
Merge medio
2g 4h
PR unite (30g)
132

Descrizione

TypeScript Version: latest, demonstrable on playground (links below)

Search Terms: index signature diagnostics property type

Code:


interface BaseNode {
  kind: string;
  [key: string]: string | TokenNode["data"];
}

interface TokenNode extends BaseNode {
  kind: 'token';
  data: TokenData;
}

interface TokenData {
  offset: number;
  width: number;
  leading_width: number;
  trailing_width: number;
}

Expected behavior:

No errors, as the code is correct.

Actual behavior:

An error on interface TokenNode:

Interface 'TokenNode' incorrectly extends interface 'BaseNode'.
  Index signature is missing in type 'TokenNode'.

HOWEVER if I change TokenNode["data"] to its value TokenData, the error goes away.

Playground Link:

Code above displaying the error
Code above with the fix, no errors

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

Riproduci entrambi gli esempi collegati di TypeScript Playground, confrontando la forma indexed-access con l’equivalente forma TokenData. Traccia il comportamento del controllo dei tipi per le dichiarazioni delle interfacce BaseNode e TokenNode; il lavoro è completato quando la versione indexed-access non segnala più l’errore di ereditarietà non valida, mentre il caso valido esistente continua a non presentare errori.

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
Specificata chiaramente
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.