Estou trabalhando em um arquivo de definições para a API de mapas do Google para TypeScript.
E eu preciso definir um enum como tipo por exemplo. google.maps.Animation
que contém duas propriedades: BOUNCE
e DROP
.
Como isso deve ser feito no TypeScript?
enums
typescript
eNepper
fonte
fonte
Respostas:
O TypeScript 0.9+ tem uma especificação para enumerações:
A vírgula final é opcional.
fonte
enum
construção nesta fase, pois a equipe do TypeScript deixou bem claro que vai mudar - para que ela se quebre.A partir do TypeScript 0.9 (atualmente uma versão alfa), você pode usar a definição de enum assim:
Por padrão, essas enumerações serão atribuídas 0, 1 e 2, respectivamente. Se você deseja definir explicitamente esses números, pode fazê-lo como parte da declaração enum.
Listagem 6.2 Enumerações com membros explícitos
Ambos os exemplos foram retirados diretamente do TypeScript for JavaScript Programmers .
Observe que isso é diferente da especificação 0.8. A especificação 0.8 tinha a seguinte aparência - mas estava marcada como experimental e com possibilidade de alteração, portanto, você precisará atualizar qualquer código antigo:
Isenção de responsabilidade - este exemplo 0.8 seria quebrado nas versões mais recentes do compilador TypeScript.
fonte
Isso agora faz parte do idioma. Consulte TypeScriptLang.org> Tipos básicos> enum para obter a documentação sobre isso. Um trecho da documentação sobre como usar essas enumerações:
Ou com números de apoio manuais:
Você também pode voltar ao nome da enumeração usando, por exemplo
Color[2]
.Aqui está um exemplo de como tudo isso acontece:
Isso registrará:
Porque, no momento em que escrevemos isso, o Typcript Playground gerará este código:
fonte
Apenas mais uma observação de que você pode enum de id / string com o seguinte:
fonte
str
e usariaid
isso?abstract class
mais apropriado evitar a instanciação, já que o TypeScript não tem a noção de astatic class
?Atualização :
Conforme observado por @ iX3, o Typescript 2.4 tem suporte para seqüências de caracteres enum.
Consulte: Criar uma enumeração com valores de sequência em TypeScript
Resposta original:
Para valores de membro de String, o TypeScript permite apenas números como valores de membro de enumeração. Mas existem algumas soluções / hacks que você pode implementar;
Solução 1:
copiado de: https://blog.rsuter.com/how-to-implement-an-enum-with-string-values-in-typescript/
Existe uma solução simples: basta converter a string literal em qualquer uma antes de atribuir:
solução 2:
copiado de: https://basarat.gitbooks.io/typescript/content/docs/types/literal-types.html
Você pode usar uma string literal como um tipo. Por exemplo:
Aqui, criamos uma variável chamada foo que permitirá apenas que o valor literal 'Hello' seja atribuído a ela. Isso é demonstrado abaixo:
Eles não são muito úteis por si só, mas podem ser combinados em uma união de tipos para criar uma abstração poderosa (e útil), por exemplo:
fonte
Enums em texto datilografado:
As enumerações são colocadas na linguagem de texto para definir um conjunto de constantes nomeadas. Usar enums pode facilitar nossa vida. A razão para isso é que essas constantes geralmente são mais fáceis de ler do que o valor que o enum representa.
Criando uma enumeração:
Este exemplo dos documentos datilografados explica muito bem como as enums funcionam. Observe que nosso primeiro valor de enum (Para cima) é inicializado com 1. Todos os seguintes membros do número de enum são então incrementados automaticamente a partir desse valor (ou seja, Baixo = 2, Esquerda = 3, Direita = 4). Se não inicializarmos o primeiro valor com 1, a enumeração começará em 0 e, em seguida, aumentará automaticamente (ou seja, Baixo = 1, Esquerda = 2, Direita = 3).
Usando uma enumeração:
Podemos acessar os valores da enumeração da seguinte maneira:
Observe que desta forma somos muito mais descritivos na maneira como escrevemos nosso código. As enums basicamente nos impedem de usar números mágicos (números que representam alguma entidade porque o programador lhes deu um significado em um determinado contexto). Os números mágicos são ruins pelos seguintes motivos:
fonte