Como usar enum do Typescript como parâmetro de função?
Estou tendo dificuldades em obter segurança de tipo ao usar enum como parâmetros de função. Por exemplo, usando o código de exemplo na documentação de Enum do TS:
enum UserResponse {
No = 0,
Yes = 1,
}
function respond(recipient: string, message: UserResponse): void {
console.log(recipient, message)
}
respond("Princess Caroline", UserResponse.Yes);
respond("Princess Caroline", 'some other message'); // Argument of type '"some other message"' is not assignable to parameter of type 'UserResponse'.
respond("Princess Caroline", 5); // No error...
- Por que o compilador não está dando erros ao usar o valor
5, que não está definido emUserResponse? - Como posso melhorar as tipagens para que o parâmetro
messageaceite SOMENTEUserResponse.Yes | UserResponse.No? - Devo usar alguma outra estrutura de dados para armazenar
UserResponse?
Resposta #1
Infelizmente, esta pergunta é um duplicado. No entanto, isso significa que já existe uma resposta: https://stackoverflow.com/a/49169301/12425097 - Parece que suas melhores opções são usar um enum de string ou uma união de tipo de namespace, que é demonstrada na resposta vinculada.