Javascript 如何在TypeScript中将数组初始化为元组类型?
我正在用React/Redux制作数独网络应用程序。但我在打字方面遇到了一些问题 当前代码:Javascript 如何在TypeScript中将数组初始化为元组类型?,javascript,arrays,typescript,multidimensional-array,typescript-typings,Javascript,Arrays,Typescript,Multidimensional Array,Typescript Typings,我正在用React/Redux制作数独网络应用程序。但我在打字方面遇到了一些问题 当前代码: //typedef 类型Tuple9=[T,T,T,T,T,T,T,T,T]; 导出类型板=Tuple9; //使用board类型编写代码,我想将getEmptyBoard()修复为更具编程性。 const getEmptyBoard:(()=>Board)=()=>{ 返回[ [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0
//typedef
类型Tuple9=[T,T,T,T,T,T,T,T,T];
导出类型板=Tuple9;
//使用board类型编写代码,我想将getEmptyBoard()修复为更具编程性。
const getEmptyBoard:(()=>Board)=()=>{
返回[
[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()
修复为更具编程性
类型在运行时不存在,这意味着不能说“给定类型A构建运行时数组X” 构建它的更具程序性的方法是
new Array(9).fill(0).map(() => new Array(9).fill(0))
对于
9
我会像你那样做
否则,您将遵循旧的函数式编程的说法:如果它外表纯洁,那么它的内在纯洁与否无关紧要
,并且战略性地使用Tuple9
:
typetuple9=[T,T,T,T,T,T,T,T,T,T,T];
函数make9(what:T):Tuple9{
返回新数组(9)。将(what)填充为Tuple9;
}
导出类型板=Tuple9;
函数makeBoard():板{
返回make9(make9(0));
}
这是我的解决方案之一,但不起作用,因为两种类型不兼容。Thx:)const getEmptyBoard:(()=>Board)=()=>new Array(9)。fill(0)。map(()=>new Array(9)。fill(0))作为Board代码>此代码有效!
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));
}