Как инициализировать массив функций в typescript?

#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> = [];