我正在用React-Redux设置一个应用程序,并配置了商店,类似于这里显示的指南
这是我的密码:
import { applyMiddleware, compose, createStore } from 'redux';
import thunkMiddleware from 'redux-thunk';
import rootReducer from '../reducers/reducers'
export default function configureStore() {
const middlewares = [thunkMiddleware];
const middlewareEnhancer = applyMiddleware(...middlewares);
const enhancers = [middlewareEnhancer];
const composedEnhancers = compose(...enhancers);
const preloadedState = (<any>window).__PRELOADED_STATE__;
delete (<any>window).__PRELOADED_STATE__;
const store = createStore(rootReducer, preloadedState, composedEnhancers);
return store;
}
但是,在运行build时,我一直收到以下Typescript错误
TS2345: Argument of type '(...args: any[]) => {}' is not assignable to parameter of type 'StoreEnhancer<{}, {}>'.
我很困惑。Redux的声明文件状态(如下所示)是否表明StoreEnhancer只是将Store和state扩展名作为空的普通对象接收?
export type StoreEnhancer<Ext = {}, StateExt = {}> = (next: StoreEnhancerStoreCreator) => StoreEnhancerStoreCreator<Ext, StateExt>
如果是这样,为什么它不接受rest参数中的“Any”类型,即使我在配置文件中将“noImplicitAny”属性设置为“true”,如下所示?
(据我所知,rest参数无论如何都不能接收声明的类型。)
我错过了什么
此外,我正在使用以下软件包版本:
"redux":"^16.4.2",
"redux":"^4.0.0",
"redux-thunk":"^2.3.0",
"webpack":"^4.16.5",
"awy-typecript-loader":"^5.2.0",
"typecript":"^3.0.3"
"@类型/反应":"^16.4.12"",
"@类型/redux":"^3.6.0",
"@类型/redux-thunk":"^2.1.0"
使用以下TS配置设置:
“编译器选项:{
*“outDir”:“/dist/”,
*“sourceMap”:true,
*“noImplicitAny”:true,
*“module”:“esnext”,
*“target”:“esnext”,
*“jsx”:“react”,
*“moduleResolution”:“node”,
*“noUnusedLocals”:true,
*“noUnusedParameters”:true,
*“noUnusedParameters”:true,
*“strict”:true,
*“true,
*“esmodulep”:false,
*“noFallthroughCasesInSwitch”:true,
*“allowSyntheticDefaultImports”:true
}
问题是,Comported增强器
的返回类型是{}
,而createStore
期望它是StoreEnhancerStoreCreator
export function compose<R>(...funcs: Function[]): (...args: any[]) => R;
如果不指定
R
,则默认为{}
。所以要么指定R
,要么只使用compose(middlewareEnhancer)
,除非你真的需要一个动态的增强子数组。
问题内容: 这个问题解决了。 我正在开发一个基于Java Swing的项目,并且该应用程序的外观是完全自定义的。我们试图在整个程序中保持一致的外观,并且默认的Java对话框窗口不同。 当前问题要求控件禁止调用用户提示。与JOptionPane.showConfirmDialog()相似,在这种情况下,静态调用将产生一个窗口,并暂停程序的流程,直到用户选择一个选项为止。它还返回选项的值。请注意,GU
我有一种情况,我可以使用阻塞I/O库访问外部服务上的RESTendpoint,或者在这种情况下,我可以直接使用HttpClient(如WebClient)调用REST。现在,我想知道在包装对该库的调用和将其发布到弹性线程或使用WebClient访问endpoint之间是否存在性能差异。 如何准确地处理调用这两个选项。所以我们假设网络流量使用单线程来处理请求。然后,请求将由WebClient处理。这
问题内容: 是否有可能做出无法逃脱和?我目前得到: 但我正在寻找这样的事情: 问题答案: 从Go 1.7开始,您仍然 无法使用json.Marshal()做到这一点 。json.Marshal的源代码显示: json.Marshal总是这样做的原因是: 字符串值编码为强制转换为有效UTF-8的JSON字符串,用Unicode替换符文替换无效字节。尖括号“ <”和“>”转义为“ \ u003c”
在TypeScript中,可以用“Rest参数”声明函数: 假设我声明了另一个调用的函数: 编译器产生以下消息: 提供的参数与调用目标的任何签名都不匹配:无法将类型“string”应用于类型为“string[]”的参数2。 如何才能调用将提供的参数?
问题内容: 我对Go如何处理非阻塞IO感到困惑。API在我看来基本上是同步的,并且在Go上观看演示时,听到诸如“和调用块”之类的注释并不罕见。 从文件或网络读取时,Go是否使用阻塞IO?还是当在Go Routine中使用某种魔术来重写代码? 来自C#背景,这感觉非常不直观,在C#中,当使用异步API时我们使用了关键字。这清楚地表明,API可以产生当前线程,并在以后的延续中继续。 因此,TLDR;当
问题内容: 无法致电Spring REST服务 我的春季服务 我的AJAX代码 我收到以下错误:( 跨域请求被阻止:同源策略禁止读取位于http:// localhost:8080 / SpringMVC / rest / MAS / authenticate 的远程资源。可以通过将资源移到同一域或启用CORS来解决此问题。 我也尝试过。它将我的body对象附加到URL中,URL变为不同的URL,