JavaScript - ключевое слово super () не найдено - PullRequest
1 голос
/ 03 марта 2020

У меня проблемы с небольшой проблемой, и я sh узнаю, что кто-то может помочь мне решить эту проблему быстро. Вот мой код:

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"
    ]
  }
}

Вот код для экспорта клиента:

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

Вот код, который я использую для тестирования моего клиента:

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

И вот ошибка, которую я получаю:

super();
    ^^^^^

SyntaxError: 'super' keyword unexpected here

Надеюсь, кто-нибудь может мне помочь!

(я кодирую в javascript)

Ответы [ 3 ]

4 голосов
/ 03 марта 2020
Ключевое слово

Super используется в унаследованных классах для использования их свойств внутри дочернего класса. Ваш класс не расширен ни от каких других классов, поэтому super не принимается.

Вызывая метод super () в методе конструктора, мы вызываем родительский метод конструктора и получаем доступ к Свойства и методы родителя:

Если ваш класс не расширяется ни от каких других классов, метод super необходимо удалить.

Проверьте некоторые детали здесь .

0 голосов
/ 03 марта 2020

super() используется для вызова исходного метода родительского класса, когда вы расширяете один класс из другого, например,

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

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

        console.log("World");
    }
}

const test = new MySecondTestClass();

Это выдаст Hello, а затем World. Без вызова super() будет выведен только World, потому что конструктор во втором классе переопределит конструктор в первом.

Класс, который вы написали, не принадлежит другому классу, поэтому super() не имеет родительского класса для вызова.

Вы должны быть в состоянии решить вашу проблему, либо унаследовав от другого класса, если это было вашим намерением, либо просто удалив строку, где вы вызываете super().

0 голосов
/ 03 марта 2020

Поскольку вы не расширяете какой-либо класс и не ожидаете, что super не ожидается, super вызывает конструктор родительского класса, но в этом случае у этого класса нет родителя.

...