Curso TypeScript

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!