在typescript上的react-redux中初始化状态

时间:2018-02-13 12:04:42

标签: reactjs typescript react-redux

我正在尝试使用initState初始化商店。我的initstate对象是,

const initState :any = {
    squares: Array<number>(9).fill(null),
    curState: false
}

我正在创建这样的商店。

let store = createStore(appReducer, initState);

这会在打字稿中引发错误

  

TS2339:类型'number []'上不存在属性'fill'。

我的tsconfig.json文件

{
    "compilerOptions": {
        "outDir": "./dist/",
        "sourceMap": true,
        "noImplicitAny": true,
        "module": "commonjs",
        "target": "es5",
        "jsx": "react",
        "moduleResolution": "node"
    },
    "include": [
        "./src/**/*"
    ]
}

如果我将initState声明更改为

const initState :any = {
    squares: Array<number>(9),
    curState: false
}

然后它可以工作,但不会创建数组。

2 个答案:

答案 0 :(得分:0)

将“es2015.core”添加到tsconfig.json的lib属性中:

{
    "compilerOptions": {
        "lib": [
            "dom",
            "es5",
            "scripthost",
            "es2015.core",
        ]
    }
}

请注意,如果未指定lib属性(如原始示例中所示),则此属性的默认值为["dom", "es5", "scripthost"]。因此,您还需要添加这些值以避免删除这些默认库。

以下是lib编译器选项的文档:https://www.typescriptlang.org/docs/handbook/compiler-options.html(向下滚动到--lib)。

答案 1 :(得分:0)

使用数组传播创建一个新数组,然后用null填充每个值。这应该是有效的。

const initState: any = {
    squares: [...new Array(9).fill(null)],
    curState: false,
};