我正在尝试使用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
}
然后它可以工作,但不会创建数组。
答案 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,
};