1
votes

JavaScript - mot clé super () inattendu

J'ai des problèmes avec un petit problème et j'aimerais que quelqu'un puisse m'aider à résoudre ce problème rapidement. Voici mon code:

super();
    ^^^^^

SyntaxError: 'super' keyword unexpected here

Voici le code pour exporter le client:

const tst = require('./palamazon')
let t = new tst.Client()

Voici le code que j'utilise pour tester mon client :

module.exports = {
    Client: require('./client/Client')
}

Et voici l'erreur que j'obtiens:

class Client {
    /**
   * @param {ClientOptions} [options] Options for the client
   */
  constructor(options = {}) {
    super();
    this.lnk = "https://marketpala.glitch.me";
    this.endpoints = [
        "/commandes.json",
        "/users.json",
        "/blacklist.json",
        "/infov.json",
        "/reserved.json"
    ]
  }
}

J'espère que quelqu'un pourra m'aider!

(je code en javascript)


3 commentaires

Est-ce que cela répond à votre question? super mot-clé inattendu ici


pourquoi voudriez-vous appeler super () dans ce cas?


@KoroBaka Si vous suivez une sorte de tutoriel et qu'il vous a dit d'écrire super (), il est fort probable que vous étiez censé étendre Client à partir de quelque chose. En fait, en fonction de la façon dont vous utilisez la classe (écrasant simplement le constructeur et n'ajoutant rien d'autre), je dirais que c'est même probable.


3 Réponses :


4
votes

Le mot clé Super est utilisé dans les classes héritées pour utiliser leurs propriétés à l'intérieur de la classe enfant. Votre classe n'est étendue à aucune autre classe, donc super n'est pas accepté.

En appelant la méthode super () dans la méthode constructeur, nous appelons la méthode la méthode du constructeur du parent et accède aux propriétés du parent et méthodes:

Si votre classe n'est pas étendue à partir d'autres classes, la méthode super doit être supprimée.

Vérifiez quelques détails ici .


10 commentaires

Si la classe n'étend aucune autre classe de base, super doit être supprimé.


Oui, il n'est pas nécessaire d'appeler super


C'est comme essayer d'appeler vos parents si vous êtes orphelin.


@RaekhVoid le meilleur exemple que nous pourrions donner :)


TypeError: tst.Client n'est pas un constructeur


qu'est-ce que c'est let t = new api.Client () ? Vous n'avez pas importé ou déclaré api.


C'est tst.client, je viens d'échouer dans le post principal


Oui, Client: require ('./ client / Client')


Ok, je suis juste un idiot, j'ai oublié module.exports = Client;


Hehe. Bon codage



0
votes

Comme vous n'étendez aucune classe donc le super n'est pas attendu, super appelle le constructeur de classe parent mais dans ce cas il n'y a pas de parent pour cette classe.


0 commentaires

0
votes

super () est utilisé pour appeler la méthode originale sur la classe parent lorsque vous étendez une classe à partir d'une autre comme ceci,

class MyFirstTestClass {
    constructor() {
        console.log("Hello");
    }
}

class MySecondTestClass extends MyFirstTestClass {
    constructor() {
        super();

        console.log("World");
    }
}

const test = new MySecondTestClass();

Cela affichera Hello puis World . Sans appeler super () , seul World serait affiché car le constructeur de la seconde classe remplacerait le constructeur de la première.

La classe que vous avez écrite ne s'étend pas d'une autre classe, et donc super () n'a pas de classe parent à appeler.

Vous devriez pouvoir résoudre votre problème soit en héritant d'une autre classe si telle était votre intention, soit en supprimant simplement la ligne où vous appelez super () . p >


0 commentaires