Рассмотрим типы FooBar1
и FooBar2
, определенные следующим образом:
type Foo = { foo: string };
type Bar = { bar: number };
type FooBar1 = Foo & Bar;
type FooBar2 = { foo: string; bar: number };
Вопрос: В чем разница между FooBar1
и FooBar2
?
Моя попытка / исследование:
- Они назначаются друг другу в двух направлениях! (проверено вручную и с помощью
tsd
- см. здесь ) - Тем не менее, они не идентичны друг другу! (проверено с помощью
tsd
- см. здесь )
Другой способ убедиться в том, что intellisense VSCode не сворачивается { foo } & { bar }
автоматически в { foo, bar }
(хотя он свернет другие сложные типы в более простые формы, такие как NonNullable<string | undefined>
до string
):