如何在打字稿中初始化函数数组?

时间:2020-10-22 10:20:43

标签: typescript

我必须继续向函数undoSteps的数组中添加值

let undoSteps: [() => void] = [null];
undoSteps.push(printingSomething());

这将在数组中再添加一个null条目。

如何不使用shift()方法摆脱 null

2 个答案:

答案 0 :(得分:0)

只需将其初始化为空(类型也是关闭的,本质上,您将其定义为具有一个元素的元组):

let undoSteps: (() => void)[] = [];

答案 1 :(得分:0)

您在提供的代码中所做的就是定义一个tuple,它是一组具有定义的类型,顺序和数量的元素(实际上与运行时的普通数组没有区别)

与H.B.说,这是您要实现的正确语法。

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());

但是,如果您不希望为函数设置特定的参数集或特定的返回类型(与voidundefined不同),则可以使用通用函数类型来编写它:

let undoSteps: Function[] = [];

let undoSteps: Array<Function> = [];