【问题标题】:Map typescript interface to related interface将 typescript 接口映射到相关接口
【发布时间】:2019-01-06 04:33:33
【问题描述】:

假设我有一个打字稿界面:

interface IOriginal {
    aaa: string;
    bbb: boolean;
}

...现在说我想创建一个具有相同键但不同值的类似接口(在我的具体情况下,这些值是使用 Redux 的 Reducer 泛型派生的,但我想保持答案相当笼统):

import { Reducer } from "redux";
interface IDerived{
    aaa: Reducer<string>;
    bbb: Reducer<boolean>;
}

问题:如何直接从IOriginal 生成IDerived 而无需明确重新键入所有键值对(违反 DRY 并且有两个地方可以更新内容)?如果这些是对象,我可以这样做:

const derived = original;
for(var key in derived) derived[key] = Reducer(original[key]);

...但我不确定在处理类型/接口时是否有等效的工具。

【问题讨论】:

    标签: typescript typescript-generics


    【解决方案1】:

    您正在寻找mapped type:

    type IDerived = { [K in keyof IOriginal]: Reducer<IOriginal[K]> };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-11
      • 1970-01-01
      • 2022-08-19
      • 2018-12-22
      • 1970-01-01
      • 2021-12-25
      • 2020-11-23
      • 2017-11-26
      相关资源
      最近更新 更多