我必须继续向函数undoSteps
的数组中添加值
let undoSteps: [() => void] = [null];
undoSteps.push(printingSomething());
这将在数组中再添加一个null条目。
如何不使用shift()方法摆脱 null ?
答案 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());
但是,如果您不希望为函数设置特定的参数集或特定的返回类型(与void
或undefined
不同),则可以使用通用函数类型来编写它:
let undoSteps: Function[] = [];
或
let undoSteps: Array<Function> = [];