Разбор сгенерированного объявления метода в TypeScript - PullRequest
1 голос
/ 24 апреля 2020

С помощью TypeScript в коде Visual Studio я начинаю со следующей строки в методе визуализации моего приложения React:

<button className="btn btn-outline-primary" onClick={this.load}>Load</button>

Я использую встроенный помощник Visual Studio Code для генерации метода load для меня, и он генерирует:

load(): ((event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void) | undefined {
    throw new Error("Method not implemented.");
}

Я не могу найти документацию для этого стиля объявления и не могу разобрать его мысленно.

  • Что такое | undefined { throw ... } делать?
  • Что означает => void? Я предполагал, что это означает, что метод возвращает void, но если я не возвращаю что-либо в теле метода, я получаю сообщение об ошибке.

Этот стиль объявления известен как объявление Speci c стиль я мог бы исследовать дальше?

Ответы [ 3 ]

1 голос
/ 24 апреля 2020

load() метод должен возвращать функцию-обработчик события или не определен.

Если он возвращает функцию, сигнатура должна быть:

(event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void

else

undefined

Причина, по которой функция обработчика событий заключена в дополнительные скобки, заключается в том, чтобы отделить ее от результата undefined. Без дополнительных скобок тип результата load() будет обработчиком события, который возвращает:

...=> void | undefined

В этом случае фигурные скобки являются просто реализацией метода load():

load() {
    // not implemented yet. Implementation will replace throwing of an exception.
}
1 голос
/ 24 апреля 2020

Сначала давайте удалим TS

load() {
    throw new Error("Method not implemented.");
}

Это просто нормальная JS часть. Теперь вернемся назад в типы:

load(): (event) => void {
    throw new Error("Method not implemented.");
}

this.load - это функция с аргументом события, которая возвращает void. Давайте выделим это:

type LoadFunction = (event) => void
load(): LoadFunction | undefined {
    throw new Error("Method not implemented.");
}

this.load равно либо LoadFunction ИЛИ undefined

0 голосов
/ 24 апреля 2020

Ответ на ваш вопрос.

Вы можете прочитать «Метод не реализован»

Это означает, что функция загрузки не определена, вам нужно проверить, написана ли она где-то в вашем файле. код или написать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...