Closed
Description
cc @ahejlsberg
TypeScript Version: 2.7.0-dev.20180327
Search Terms:
Code
type Id<T> = T;
type Z<T> = Id<T> extends true ? Id<T> : never;
type z = Z<boolean>;
type A<T extends any[]> = T[0] extends true ? T[0] : never;
type a = A<[boolean]>;
type B<T extends {}> = { [P in keyof T]: T[P] extends true ? T[P] : never }[keyof T];
type b = B<[boolean]>;
Expected behavior:
z
, a
, b
is true
.
Actual behavior:
z
is true
but a
, b
is never
.
Playground Link:
Related Issues: