function saveUser(
  user: User,
  emailOption: WelcomeEmailOption,
  verificationStatus: VerificationStatus
): void {
  if (emailOption === WelcomeEmailOption.Send) {
    sendEmail(user.email, 'Welcome!');
  }
  if (verificationStatus === VerificationStatus.Verified) {
    user.verified = true;
  }
  // save user to database...
}

E você pode chamá -lo assim:


saveUser(newUser, WelcomeEmailOption.Send, VerificationStatus.Unverified); 

Não é muito mais fácil para o seu cérebro? Essa chamada é como documentação. Está claro e direto ao ponto, e o mantenedor pode ver imediatamente o que a chamada faz e o que os parâmetros significam.

Booleanos são uma armadilha para a complexidade futura

Uma vantagem de enums Eles são expansíveis. Imagine que você tem um sistema de comida e bebida com bebidas pequenas e grandes. Você pode acabar com


var IsSmallDrink: boolean;

E você constrói seu sistema em torno dessa variável booleana, mesmo tendo campos booleanos no banco de dados para essas informações. Mas então o chefe aparece e diz: “Ei, vamos começar a vender bebidas médias!”

Uh Oh, isso será uma grande mudança. De repente, um simples booleano se tornou um passivo. Mas se você tivesse evitado booleanos e começou com


enum DrinkSize {
  Small,
  Large
}

Em seguida, adicionar outro tamanho de bebida se torna muito mais fácil.

Olha, os booleanos são poderosos e simples. Tenho idade suficiente para lembrar quando os idiomas nem sequer tinham tipos booleanos. Tivemos que simulá -los com números inteiros:


10 LET FLAG = 0
20 IF FLAG = 1 THEN PRINT "YOU WILL NEVER SEE THIS"
30 LET FLAG = 1
40 IF FLAG = 1 THEN PRINT "NOW IT PRINTS"
50 END

Então eu entendo o apelo deles. Mas o uso de booleanos acaba sendo repleto de perigo. Existem exceções? Claro, existem casos simples em que as coisas realmente estão e sempre serão verdadeiras ou falsas – como isLoading. Mas se você estiver com pressa, ou decepcionar sua guarda, ou talvez se sinta um pouco preguiçoso, pode facilmente cair na armadilha de escrever um código complicado e difícil de realizar. Portanto, pise leve e cuidadosamente antes de usar uma variável booleana.