Почему эта работа:псевдоним типа циркулярно себя ссылки
type Foo = { x: Foo }
, но это не так:
Если не они эквивалентны?
Почему эта работа:псевдоним типа циркулярно себя ссылки
type Foo = { x: Foo }
, но это не так:
Если не они эквивалентны?
За документацию, type alias может относиться к себе в собственность, но не в другом месте на правой стороне декларации:
Мы можем также иметь псевдоним типа относятся к себе в в отеле
так что, как вы отметили, что это работает:
type Foo = { x: Foo }
Однако, это не представляется возможным для псевдонима типа появляться где-либо на правой стороне декларации
Но это не удается:
type Foo = Bar<Foo>
Ну, второй не может, даже если вы не используете ограничения:
type Bar<A> = { x: string }
type Foo = Bar<Foo> // still fails with the same message
В основном, его вторая форма должна быть таким:
type Bar = { x: Foo }
type Foo = Bar;
Чтобы быть эквивалентно первому один.
Кроме того, с strictNullChecks
Я уверен, что нет такого способа инициализации такого типа.