Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在TypeScript中将数组初始化为元组类型?_Javascript_Arrays_Typescript_Multidimensional Array_Typescript Typings - Fatal编程技术网

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

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

我正在用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, 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,解决方案是什么

  • 类型在运行时不存在,这意味着不能说“给定类型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));
    }