microsoft / microsoft/TypeScript
Type parameter gets optionalized during call signature comparison
Nessuno ha ancora preso questa issue.
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.3k
- Merge medio
- 2g 4h
- PR unite (30g)
- 132
Descrizione
Bug Report
🔎 Search Terms
type parameter union undefined optional
🕗 Version & Regression Information
3.3.3333, 4.1.3, master (303ed3a357)
⏯ Playground Link
Playground link with relevant code
💻 Code
interface A {
<T>(
executor: (
resolve: {
(value: T): void;
} & {
(value?: T): void;
}
) => void
): T;
}
interface B {
<T>(
executor: (
resolve: {
(value: T): void;
} & {
(value?: T): void;
}
) => void
): T;
}
const a: B = {} as A;
🙁 Actual behavior
Compile error at the last line:
Type 'A' is not assignable to type 'B'.
Type 'T | undefined' is not assignable to type 'T'.
'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'.
Type 'undefined' is not assignable to type 'T'.
'T' could be instantiated with an arbitrary type which could be unrelated to 'undefined'.
🙂 Expected behavior
There should be no compile error, as A and B have exactly the same definition.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia riproducendo l'errore di assegnazione dell'esempio Playground collegato e analizza il confronto delle firme di chiamata e la gestione dei parametri di tipo del compilatore. Verifica perché definizioni identiche producono T | undefined invece di T, quindi accertati che l'esempio venga compilato senza errori preservando il comportamento segnalato.
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