javascript - 如何在 TypeScript 中将数组初始化为元组类型?

标签 javascript arrays typescript multidimensional-array typescript-typings

我正在使用 React/Redux 制作数独网络应用程序。但是我在打字时遇到了一些问题。

当前代码:

// typedef
type Tuple9<T> = [T, T, T, T, T, T, T, T, T];

export type Board = Tuple9<Tuple9<number>>;

// code using board type, I want to fix getEmptyBoard() to more programmatic.
const getEmptyBoard: (() => Board) = () => {
  return [
    [0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0]
  ];
};

我想将 getEmptyBoard() 修复为更具编程性。

  1. 这种情况有好的解决办法吗?
  2. 如果 1,解决方案是什么?

最佳答案

对于 9 我会做你所做的。

否则你会遵循古老的函数式编程说法:如果它的外部是纯的,那么它的内部是否不纯并不重要并战略性地使用 Tuple9 type assertion :

type Tuple9<T> = [T, T, T, T, T, T, T, T, T];
function make9<T>(what: T): Tuple9<T> {
    return new Array(9).fill(what) as Tuple9<T>;
}

export type Board = Tuple9<Tuple9<number>>;
function makeBoard(): Board {
    return make9(make9(0));
}

关于javascript - 如何在 TypeScript 中将数组初始化为元组类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56436023/

相关文章:

javascript - 从 ember-table 单元格中打开模态对话框

c++ - 在排序和旋转的数组中搜索

python - 我们如何在数组索引中使用 'and' 运算符?

c - 如何使带字符的开关盒工作?

typescript - 找不到模块 : Error: Can't resolve '@types/svgo'

Angular 9 取消订阅 NavigationEnd

javascript - 可接受/好的执行 Javascript "classes"(OOP) 的方法?

javascript - 我如何知道页面是否真的完全加载?

typescript - 输入一个 CommonJS 模块,该模块导出具有静态方法的函数构造函数

javascript - 通过 SelectBox 的下一个上一个按钮