Transcrito de modo a impedir simples comprimento de seleção como condicional esconde útil métodos e propriedades

0

Pergunta

Esta é uma questão usando o typescript discord.js como um exemplo, sem a necessidade de se compreender a biblioteca para ajudar.

Eu estou convertendo o meu aplicativo do normal js, quando eu chamar um método dá-me um tipo de mapa com uma chave e um valor. Agora que eu estou usando o typescript e a biblioteca de definições de tipo, não posso verificar o tamanho da resposta.

const attachments = interaction.options.getMessage('message', true).attachments;

Anteriormente, eu poderia simplesmente chamar um tamanho de propriedade, mas agora estou restrito a estes tipos:

anexos: Collection<string, MessageAttachment> | APIAttachment[]

É uma má prática apenas escolheu uma das condicionais usando-a como palavra-chave para eu ter mais propriedades para jogar? Como posso obter o tamanho dos anexos de segurança para resolver um tipo? Eles só têm os iteradores.

Eu entendo os benefícios do typescript e estou evitando qualquer hacky soluções. Eu estou tentando aprender a trabalhar melhor com o typescript e deseja usar os tipos que a biblioteca tem me dado.

1

Melhor resposta

1

Gostaria de recomendar este correção simples

Você poderia fazer algo como:

Se você deseja que os anexos de ser uma coleção

import { Collection } from "discord.js"
    
if(attachments instanceof Collection){
    // Do this
}

ou se você quiser que os anexos sejam a uma matriz

import { Collection } from "discord.js"

if(!(attachments instanceof Collection)){
    // Do that
}

Transcrito, em seguida, irá automaticamente detectar attachments para ser um array ou coleção

2021-11-24 03:40:51

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................