Получить последний аргумент функции в машинописи - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь деструктурировать аргументы функции, которая заботится только о последнем переданном параметре, привязывая его значение к переменной next; Следующее отлично работает в простой js, узел 10:

> function f(...{length, [length - 1]: next}) { console.log(next) }
> f(1,2,3,4)
4

Однако та же самая конструкция в машинописи дает мне:

error TS2501: A rest element cannot contain a binding pattern.

function (...{length, [length - 1]: next}) {
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Как я могу это исправить?

1 Ответ

0 голосов
/ 08 сентября 2018

Довольно интересный вопрос, потому что в основном утверждение «TS - это надмножество JS» здесь не работает.

Оказывается, что, когда мы пытаемся использовать шаблон привязки в операторе деструкции и распространения одновременно, мы получим ошибку:

enter image description here

В настоящее время в файле диагностических сообщений TS есть явная ошибка для A_rest_element_cannot_contain_a_binding_pattern_2501

Также существует открытый запрос на извлечение и в репозитории TypeScript, который, вероятно, решит эту «проблему» (не уверен, что это проблема или что-то еще).

Но вы всегда можете выбрать такой подход для своей задачи:

function f(...args) {
    console.log(args[args.length - 1]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...