Curso TypeScript

Condicionais a partir de parâmetros

A função pode receber mais de um tipo por parâmetro.
Apenas acrescentando uma condição no parâmetro, definindo assim os possíveis tipos que a função pode receber.
Isso evita a duplicação de código.


                        interface IUser {
                            name: string;
                            email: string;
                        }
                        interface IAdmin extends IUser {
                            role: 'gerente' | 'supervisor' | 'coordenador';
                        }
                        const user: IUser = {
                            name: 'Heviane',
                            email: 'heviane@gmail.com'
                        }
                        const admin: IAdmin = {
                            name: 'Pedro',
                            email: 'pedro@gmail.com',
                            role: 'gerente',
                        }
                        function redirect(user: IUser | IAdmin){
                            // if(user.role === 'gerente'){  // ERRO = role não existe em IUser
                            if('role' in user){              // OK
                                console.log('Usuário admin: ' + user.name + ', role: ' + user.role);
                            } else {
                                console.log('Usuário comum: ' + user.name);
                            }
                        }
                        redirect(user);
                        redirect(admin);