You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
interfacePerson{name: string;age: number;}constperson: Person={name: 'Mateus',age: 25,};constpersonPartial: Partial<Person>={name: 'Mateus',// Nāo precisa ter a propriedade age, todas propriedades se tornaram opcionais com o uso do Partial};
Readonly (Provido pelo próprio TypeScript)
interfacePerson{name: string;age: number;}constpersonReadonly: Readonly<Person>={name: 'Mateus',age: 25,};personReadonly.age=23;// Error, todas propriedades de personReadonly sāo readonly (nāo podem ser alteradas)
Criando seu próprio Mapped Type - Stringify
interfacePerson{name: string;age: number;}typeStringify<T>={[PinkeyofT]: string;};constpersonString: Stringify<Person>={name: 'Mateus',age: '25',// Todas propriedades se tornam string};
Stringify em nested objects
interfacePerson{name: string;age: number;extraInformation: {salary: number;role: string;};}typeStringify<T>={/* Conditional typing Pra cada propriedade irá verificar se é objeto * Se nāo for objeto, coloca o tipo como string * Se for objeto, a tipagem do objeto será mapeada pelo stringify Repare que se torna algo muito parecido com uma recursividade */[PinkeyofT]: T[P]extendsobject ? Stringify<T[P]> : string;};constperson: Person={name: 'Mateus',age: 25,// numberextraInformation: {salary: 100,// numberrole: 'Developer',},};constpersonStr: Stringify<Person>={name: 'Mateus',age: '25',// stringextraInformation: {salary: '100',// stringrole: 'Developer',},};