Why does this work: ```ts type Foo = { x: Foo } ``` but this doesn't: ```ts type Bar<A> = { x: A } type Foo = Bar<Foo> // ^^^ Type alias 'Foo' circularly references itself ``` Shouldn't they be equivalent?