Closed
Description
TypeScript Version: 3.4.0-dev.201xxxxx
Search Terms:
Code
export type ElChildren =
| ElChildren.Void
| ElChildren.Text;
export namespace ElChildren {
export type Void = undefined;
export type Text = string;
}
type Relax<C extends ElChildren> = C extends ElChildren.Text ? ElChildren.Text : C;
export class Elem<
C extends ElChildren,
> {
constructor(
private children_: Relax<C>,
) {
}
}
new Elem(undefined as ElChildren.Void);
new Elem('' as ElChildren.Text);
new Elem('' as ElChildren.Void | ElChildren.Text); // error
new Elem('' as ElChildren); // error
Expected behavior:
pass
Actual behavior:
Argument of type 'ElChildren' is not assignable to parameter of type 'undefined'.
Type 'string' is not assignable to type 'undefined'.
Related Issues: