Quando crio uma união entre dois tipos de objeto ( A
e B
), espero que uma variável atribuída a esse tipo de união só possa assumir o formato de A
ou B
.
Inesperadamente, bad
não há um erro de tipo aqui, embora intuitivamente devesse haver, pois não satisfaz as restrições de A
nem B
. Link do Typescript Playground
type A = {a: string}
type B = {a: string, b: string, c: string}
type Foo = A | B
// this should be a type error, but it isn't?
// to be valid, it should either:
// - not have "c" property
// - add the "b" property
const bad: Foo = {
a: "",
c: ""
}
Como posso melhorar Foo
para que a bad
variável falhe com um erro de tipo?