gpt4 book ai didi

typescript - 如何在 NgRx createAction props<>() 中使用泛型类型

转载 作者:行者123 更新时间:2023-12-04 12:34:47 24 4
gpt4 key购买 nike

我想创建一个 NgRx Action 创建工厂。但我不知道如何将泛型类型传递给 props方法。

import { createAction, props } from "@ngrx/store";

function actionFactory<T>(name: string) {
return createAction(name, props<T>());
// ^^^^^^^^^^
}
它抛出这个错误
Type 'Props<T>' provides no match for the signature '(...args: any[]): object'
我需要如何修改工厂方法以将泛型类型传递到 props这样的方法?:
const action = actionFactory<{ id: string }>("sample");
您可以在 Stackblitz 上自行尝试

最佳答案

好像@ngrx/store - 由于某些原因 - 阻止使用空对象创建操作。这是关于 @ngrx/store 的可能解决方案要求和使 Action 完全键入:

import { createAction, props, Props, NotAllowedCheck } from "@ngrx/store";

// T extends object meets the condition of props function
function actionFactory<T extends object>(name: string) {
// restricting config type to match createAction requirements
return createAction(name, props<T>() as Props<T> & NotAllowedCheck<T>);
}

// ok
const action = actionFactory<{ id: string }>("sample");

// empty object picked up on type level
const emptyAction = actionFactory<{}>("sample");
emptyAction({}); // error as expected properly
STACKBLITZ

关于typescript - 如何在 NgRx createAction props<>() 中使用泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65888508/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com