Type
Tudo que é feito com interface pode ser feito com type.
Usado para fazer junções, merges de interfaces.
interface IAnimal2 {
name: string;
type: 'terrestre' | 'aquático';
}
interface ICanino2 extends IAnimal2 {
porte: 'pequeno' | 'medio' | 'grande';
}
interface IFelino2 extends IAnimal2 {
visaoNoturna: boolean;
};
//type animal = ICanino2 & IFelino2; // Juntar duas interfaces
type domestic = ICanino2 | IFelino2; // Ou um ou outro
const animal: domestic = {
name: 'Animal é do tipo domestico = Canino ou Felino',
type: 'terrestre',
porte: 'medio'
}
console.log(animal);
Type readonly
interface Dog{
name: string;
age: number;
color?: string; // opcional
}
type readonlyDog = {
// Iterando as propriedades do objeto Dog
readonly [k in keyof Dog]: Dog[k];
// A palavra reservada "readonly" está aplicando a propriedade "somente leitura" aos itens do objeto.
}
const myDog: readonlyDog = {
name: 'Rex',
age: 5,
color: 'Black'
}
console.log(myDog);
// myDog.name = 'Rex 2'; // Erro!