microsoft / microsoft/TypeScript
A behavior of conditional types is changed (regression)
Aperta
@weswigham ci sta già lavorando.
Dal 27/2/2019.
Needs Investigation
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.3k
- Merge medio
- 1g 19h
- PR unite (30g)
- 117
Descrizione
@RyanCavanaugh @weswigham @ahejlsberg Caused by #27697
TypeScript Version: 3.4.0-dev.20190222
Search Terms:
Code
type Attrs = Record<string, string | EventListener | null | undefined>;
type Children =
| Children.Void
| Children.Text
| Children.Collection
| Children.Record;
namespace Children {
export type Void = undefined;
export type Text = string;
export interface Collection extends ReadonlyArray<El> { }
export type Record = { [field: string]: El; };
}
interface El<
T extends string = string,
E extends Element = Element,
C extends Children = Children,
> {
readonly tag?: T;
readonly element: E;
children: Relax<C>;
}
type Relax<C extends Children> = C extends Children.Text ? Children.Text : C;
declare function f<C extends Children>( children: C): C;
declare function f (attrs: Attrs, ): void;
declare function f<C extends Children>(attrs: Attrs, children: C): C;
f({ a: 0 as any as El<'a', HTMLAnchorElement> }); // ok
f({ a: 0 as any as El<'a', HTMLAnchorElement, Children> }); // ok
f({ a: 0 as any as El<'a', HTMLAnchorElement, Children.Void> }); // error since 3.4.0-dev.20190222
f({ a: 0 as any as El<'a', HTMLAnchorElement, Children.Text> }); // error since 3.4.0-dev.20190222
Expected behavior:
pass
Actual behavior:
error
Related Issues:
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.
Valutazione
Questa issue non è ancora stata valutata.