javascript - 在 Typescript 中输入非确定性深度数组

标签 javascript arrays typescript multidimensional-array typescript-typings

我目前正在将一些 Javascript 代码移植到 Typescript。我有一个本质上等同于以下内容的函数:

let deepArray = [];
function deeper() {
  if(Math.random() > 0.5) {
    deepArray.push(deeper());
  } else {
    deepArray.push("No deeper.");
  }
  return deepArray;
}
deeper();

我想知道是否有一种简单的方法可以将类型分配给 deepArray 并将返回类型分配给 deeper。显然,它是一个具有一定深度的 string[],但如前所述,该深度是不确定的。我希望尽可能保持代码与原始代码相似,因此避免更改数据结构是目标。这是可能的,还是我应该将其标记为 any 并继续?

最佳答案

您可以定义一个表示任意嵌套数组的类型:

interface NestedArray<T> extends Array<T | NestedArray<T>> {
}
let deepArray: NestedArray<string> = [];

function deeper() {
    if (Math.random() > 0.5) {
        deepArray.push(deeper());
    } else {
        deepArray.push("No deeper.");
    }
    return deepArray;
}
deeper();
console.log(deepArray)

关于javascript - 在 Typescript 中输入非确定性深度数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56596313/

相关文章:

javascript - PouchDB 未定义

java - boolean allLess(int[]一,int[]二)方法

Angular 2 : How do you run 2 animations in parallel?

typescript - 重新导出 typescript .d.ts 定义文件中的所有类型

angular - 显示带有加载和错误情况的数据

javascript - 如何在 node.js 中将 derby.js 与 express.js 集成?

javascript - 如何获取行索引并将其作为参数发送给javascript函数

javascript - 创建一个新数组来计算特定数字之间的距离

python - 如何对 numpy 数组中的多个变量求和?

java - FileInputStream.read 如何更改我的字节数组?