Получить последний аргумент функции в машинописи

Я пытаюсь деструктурировать аргументы функции, которая заботится только о последнем переданном параметре, привязывая его значение к переменной 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 ответ

Решение

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

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

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

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

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

function f(...args) {
    console.log(args[args.length - 1]);
}
Другие вопросы по тегам