Comprendre la notation
Dans la documentation discord.js et lors de la demande d'aide sur le serveur officiel, vous rencontrerez de nombreuses sortes de notations différentes. Pour vous aider à comprendre les textes que vous lisez, nous allons passer en revue certaines notations standard.
Gardez toujours à l'esprit que la notation n'est pas toujours rigoureuse. Il y aura des fautes de frappe, des malentendus ou des contextes qui causeront une notation différente des significations habituelles.
Classes
Certaines notations courantes se réfèrent à une classe ou aux propriétés, méthodes ou événements d'une classe. Il existe de nombreuses variations de ces notations, et elles sont très flexibles selon la personne, donc utilisez votre jugement en les lisant.
La notation <Class> signifie une instance de la classe Class. Par exemple, un extrait comme <BaseInteraction>.reply('Hello') vous demande de remplacer <BaseInteraction> par une valeur qui est une instance de BaseInteraction, par exemple interaction.reply('Hello'). Cela pourrait aussi être simplement un espace réservé, par exemple <id> signifierait un espace réservé pour un ID.
La notation Class#foo peut faire référence à la propriété foo, à la méthode ou à l'événement de la classe Class. Lequel l'auteur voulait dire doit être déterminé en fonction du contexte. Par exemple :
BaseInteraction#usersignifie que vous devriez faire référence à la propriétéusersur unBaseInteraction.TextChannel#sendsignifie que vous devriez faire référence à la méthodesendsur unTextChannel.Client#interactionCreatesignifie que vous devriez faire référence à l'événementinteractionCreatesur unClient.
Souvenez-vous que cette notation n'est pas du JavaScript valide ; c'est un raccourci pour faire référence à une portion de code spécifique.
Parfois, la notation est étendue, ce qui peut vous aider à déterminer ce que l'auteur voulait dire. Par exemple, TextChannel#send(options) est définitivement une méthode de TextChannel, puisqu'elle utilise la notation de fonction. Client#event:messageCreate est un événement puisqu'il le dit.
La chose vitale à retenir de cette notation est que le symbole # signifie que la propriété, la méthode ou l'événement ne peut être accédé que par une instance de la classe. Malheureusement, beaucoup abusent de cette notation, par exemple <Message>#send ou Util#resolveColor. <Message> est déjà une instance, cela n'a donc aucun sens, et resolveColor est une méthode statique - vous devriez l'écrire comme Util.resolveColor. Reportez-vous toujours à la documentation si vous êtes confus.
Par exemple, la fonctionnalité de recherche de la documentation utilise cette notation.
Notez l'utilisation de l'opérateur . pour la méthode statique, Role.comparePositions et la notation # pour la méthode, Role#comparePositionsTo.
Types
Dans la documentation discord.js, il y a des signatures de type partout, comme dans les propriétés, les paramètres ou les valeurs de retour. Si vous ne venez pas d'un langage typé statiquement, vous ne savez peut-être pas ce que certaines notations signifient.
Le symbole * signifie n'importe quel type. Par exemple, les méthodes qui retournent * signifient qu'elles peuvent retourner n'importe quoi, et un paramètre de type * peut être n'importe quoi.
Le symbole ? signifie que le type est nullable. Vous pouvez le voir avant ou après le type (par exemple ?T ou T?). Ce symbole signifie que la valeur peut être du type T ou null. Un exemple est GuildMember#nickname ; son type est ?string puisqu'un membre peut ou non avoir un surnom.
L'expression T[] signifie un tableau de T. Vous pouvez parfois voir plusieurs crochets [], indiquant que le tableau est multidimensionnel, par exemple string[][].
L'expression ...T signifie un paramètre rest de type T. Cela signifie que la fonction peut prendre n'importe quel nombre d'arguments, et tous ces arguments doivent être du type T.
L'opérateur |, qui peut se lire comme "ou", crée un type union, par exemple A|B|C. Simplement, cela signifie que la valeur peut être l'un des types donnés.
Les crochets angulaires <> sont utilisés pour les types génériques ou les types paramétrés, signifiant un type qui utilise un ou plusieurs type(s). La notation ressemble à A<B> où A est le type et B est un paramètre de type. Si c'est difficile à suivre, il suffit de garder à l'esprit que chaque fois que vous voyez A<B>, vous pouvez penser à un A contenant B. Exemples :
Array<String>signifie un tableau de chaînes.Promise<User>signifie unePromisequi contient unUser.Array<Promise<User|GuildMember>>serait un tableau dePromises, chacun contenant unUserou unGuildMember.Collection<Snowflake, User>serait uneCollection, contenant des paires clé-valeur où les clés sont desSnowflakes et les valeurs sont desUsers.
Dans cette partie de la documentation, vous pouvez voir deux signatures de type, string, MessagePayload ou MessageOptions, et Promise<(Message|Array<Message>)>. Le sens du mot "ou" ici est le même que |.
Syntaxe ES6
Si vous avez utilisé JavaScript pendant seulement une (relativement) courte période ou n'avez pas beaucoup d'expérience avec, vous pourriez ne pas être...
API REST
Les API REST sont extrêmement populaires sur le web et vous permettent de récupérer gratuitement les données d'un site s'il dispose d'une API disponible via...