type SomeGeneric<T> = {
x: T;
}
type TTest = SomeGeneric<TTest> & { a: string; }; // Type alias 'TTest' circularly references itself.
interface ITest extends SomeGeneric<ITest> { // OK
a: string;
}
I fail to understand why interfaces are allowed to reference themselves in their own declarations and types aren't.