#typescript
#typescript
Вопрос:
Я должен продолжать добавлять значения в массив функций undoSteps
let undoSteps: [() => void] = [null];
undoSteps.push(printingSomething());
Это добавляет еще одну запись null в массив.
Как можно избавиться от значения null без использования метода shift() ?
Комментарии:
1. Почему вы не можете использовать shift? Почему массив должен начинаться с нулевого элемента?
2. не
let undoSteps: Array<Function> = [];
выполняет работу? 🙂
Ответ №1:
Просто инициализируйте его как пустой (также тип отключен, вы определяете его как кортеж с одним элементом, по сути):
let undoSteps: (() => void)[] = [];
Ответ №2:
Что вы делаете в предоставляемом вами коде, так это определяете кортеж, который представляет собой набор элементов с определенным типом, порядком и количеством (на самом деле он не отличается от обычного массива во время выполнения).
Как сказал Х.Б., Это правильный синтаксис для того, чего вы пытаетесь достичь.
let undoSteps: (() => void)[] = [];
// if printingSomething() returns a function, this is correct
undoSteps.push(printingSomething());
или
let undoSteps: Array<() => void> = [];
// if printingSomething() returns a function, this is correct
undoSteps.push(printingSomething());
Но если вы не планируете устанавливать определенный набор параметров для функций или конкретный возвращаемый тип (отличный от void
или undefined
), вы можете написать его, используя общий тип функции:
let undoSteps: Function[] = [];
или
let undoSteps: Array<Function> = [];