Eu tenho essa interface
interface Base {
common: {
foo: string,
}
}
interface ExtendedOne extends Base {
count: number,
}
interface ExtendedTwo extends Base {
origin: string,
}
Agora, o que eu quero é, por meio da interface
definição de ExtendedOne
, ExtendedTwo
adicionar outra propriedade mais o tipo à common
propriedade proveniente de Base
.
Então digamos (pseudocódigo)
interface ExtendedOne extends Base {
count: number,
common: {
...Base,
anotherProp: boolean,
}
}
interface ExtendedTwo extends Base {
origin: string,
common: {
...Base,
anotherProp: number,
}
}
O prop adicionado sempre terá o mesmo nome (aqui anotherProp
), mas o tipo será diferente.
Se necessário, a interface pode ser alterada para um tipo.
Você pode usar
&
o operador no Typescript para combinar tipos.O TypeScript também tem alguns tipos de utilitários excelentes . Por exemplo, check
Omit
ePick
que permitem que você crie seletivamente um novo tipo omitindo ou escolhendo propriedades de outro tipo.