**TypeScript Version:** 2.8.0-dev.20180217 **Search Terms:** - "is referenced directly or indirectly in its own type annotation" **Code** ```ts type Flatten<T> = { '1': Flatten<T extends Array<infer U> ? U : T>; }[T extends number ? '1' : '1']; ``` (as mentioned in #21613) **Expected behavior:** ok **Actual behavior:** > error TS2502: ''1'' is referenced directly or indirectly in its own type annotation. **Playground Link:** needs 2.8, playground is on 2.7 **Related Issues:** #6230 I saw similar issues on other types, though the greatest common denominator appeared to be recursion + conditional types (?).