基于生成器函数的返回类型在TypeScript中声明类型
这就是我使用ActionCreater及其类型定义动作的方式基于生成器函数的返回类型在TypeScript中声明类型,typescript,react-redux,typescript-typings,Typescript,React Redux,Typescript Typings,这就是我使用ActionCreater及其类型定义动作的方式 const listRequestAction = new ActionCreator<undefined, undefined>( REQUEST_LIST ); type listRequestActionType = ReturnType< typeof listRequestAction.create >; const
const listRequestAction = new ActionCreator<undefined, undefined>(
REQUEST_LIST
);
type listRequestActionType = ReturnType<
typeof listRequestAction.create
>;
const listRequestAction=new ActionCreator(
请求列表
);
类型listRequestActionType=ReturnType<
listRequestAction.create的类型
>;
我想给我的动作添加一个动态名称空间,所以我对动作做了这个更改
const listRequestAction = (namespace: string) =>
new ActionCreator<undefined, undefined>(
`${namespace}${REQUEST_LIST}`
);
const listRequestAction=(名称空间:字符串)=>
新ActionCreator(
`${namespace}${REQUEST\u LIST}`
);
如何重新定义listRequestActionType以支持名称空间更改?这仅在TS 4.2及更高版本中可能。() 。不过似乎有点冗长。请随意重构它
// Is this the correct reference? https://github.com/cameronmaske/react-redux-typescript
class ActionCreator<T, P> {
readonly type: T;
constructor(type: T) { this.type = type; }
create = (payload: P) => ({ type: this.type, payload });
}
// I assume `REQUEST_LIST` is a string constant?
const REQUEST_LIST: "REQUEST_LIST" = "REQUEST_LIST"
const listRequestAction = <P, Namespace extends string>(
namespace: Namespace
): ActionCreator<`${Namespace}${typeof REQUEST_LIST}`, P> =>
new ActionCreator(
`${namespace}${REQUEST_LIST}` as `${Namespace}${typeof REQUEST_LIST}`
)
type listRequestActionType<P, Namespace extends string> = ReturnType<
ActionCreator<`${Namespace}${typeof REQUEST_LIST}`, P>["create"]
>;
//这是正确的引用吗?https://github.com/cameronmaske/react-redux-typescript
类ActionCreator{
只读类型:T;
构造函数(类型:T){this.type=type;}
create=(payload:P)=>({type:this.type,payload});
}
//我假设'REQUEST_LIST'是一个字符串常量?
常量请求列表:“请求列表”=“请求列表”
常量listRequestAction=(
名称空间:名称空间
):ActionCreator=>
新ActionCreator(
`${namespace}${REQUEST_LIST}`作为`${namespace}${typeof REQUEST_LIST}`
)
类型listRequestActionType=ReturnType<
ActionCreator[“创建”]
>;
请分享可复制的示例