Correndo o risco de demonstrar minha falta de conhecimento sobre os tipos do TypeScript - tenho a seguinte pergunta.
Quando você faz uma declaração de tipo para uma matriz como esta ...
position: Array<number>;
... permitirá que você faça uma matriz com comprimento arbitrário. No entanto, se você quiser uma matriz contendo números com um comprimento específico, ou seja, 3 para componentes x, y, z, você pode fazer um tipo com uma matriz de comprimento fixo, algo assim?
position: Array<3>
Qualquer ajuda ou esclarecimento apreciada!
typescript
types
fixed-length-array
HenryJack
fonte
fonte
arr
depois de inicializado.[number[50]]
, de forma que não seja necessário escrever[number, number, ... ]
50 vezes?{length: TLength}
não fornece nenhum erro de digitação caso você exceda o digitadoTLength
. Eu ainda não encontrei uma sintaxe de tipo de comprimento n imposta por tamanho.A abordagem Tupla:
Esta solução fornece uma assinatura do tipo FixedLengthArray (também conhecido como SealedArray) baseada em Tuplas.
Exemplo de sintaxe:
Implementação:
Testes:
(*) Esta solução requer que a diretiva de configuração de
noImplicitAny
typescript esteja habilitada para funcionar (prática comumente recomendada)A abordagem Array (ish):
Esta solução se comporta como um aumento do
Array
tipo, aceitando um segundo parâmetro adicional (comprimento do array). Não é tão estrito e seguro quanto a solução baseada em Tupla .Exemplo de sintaxe:
Implementação:
Testes:
fonte
var myStringsArray: FixedLengthArray<string, 2> = [ "a", "b" ] // LENGTH ERROR
parece que 2 deveria ser 3 aqui?const threeNumbers: FixedLengthArray<[number, number, number]> = [1, 2, 3];
const doubledThreeNumbers: FixedLengthArray<[number, number, number]> = threeNumbers.map((a: number): number => a * 2);
map
fornece uma assinatura de array genérica para sua saída. No seu caso, provavelmente umnumber[]
tipoNa verdade, você pode conseguir isso com o texto datilografado atual:
Exemplos:
fonte