microsoft / microsoft/TypeScript
A behavior of conditional types is changed (regression)
Offen
@weswigham arbeitet bereits daran.
Seit 27.2.2019.
Needs Investigation
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 1 T. 19 Std.
- Gemergte PRs (30 T.)
- 117
Beschreibung
@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:
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.
Bewertung
Dieses Issue wurde noch nicht bewertet.