繁体   English   中英

如何将对象中的每种类型的属性映射到接口中的属性?

[英]How to map each type of properties in object to a property in interface?

我正在尝试为打字稿中的 react-redux 项目创建调度操作界面。 我希望能够基于另一个具有可以调度的所有类型的对象来决定操作界面中的类型属性。

输入:

const FooActions = {
    REMOVE_FOO: "removeFOO",
    ADD_FOO: "addFOO",
    UPDATE_FOO: "updateFOO",
};

interface FooActionType {
    type: "MAP ALL property values from FooActions";
    payload: any;
}

预期输出:

interface FooActionType {
    type: "removeFOO" | "addFOO" | "updateFOO";
    payload: any;
}

要获取对象中值的类型,您可以使用T[keyof T] (其中T是类型)。 要在FooActions保留字符串文字类型,您需要使用类型断言。

鉴于上述情况,创建FooActionType很简单:


const FooActions = {
    REMOVE_FOO: "removeFOO",
    ADD_FOO: "addFOO",
    UPDATE_FOO: "updateFOO",
} as const;

interface FooActionType {
    type: typeof FooActions[keyof typeof FooActions];
    payload: any;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM