说我有一个打字稿界面:
interface IOriginal {
aaa: string;
bbb: boolean;
}
...,现在我要创建一个具有相同键但值不同的相似接口(在我的特定情况下,值是使用Redux的Reducer泛型派生的,但我想将答案保持在相当一般的水平) ):
import { Reducer } from "redux";
interface IDerived{
aaa: Reducer<string>;
bbb: Reducer<boolean>;
}
问题:如何在不显式重新键入所有键值对(违反DRY并有两个地方更新内容)的情况下直接从IDerived
生成IOriginal
?如果这些是对象,我可以这样做:
const derived = original;
for(var key in derived) derived[key] = Reducer(original[key]);
...但是我不确定在处理类型/接口时是否有等效的工具。
答案 0 :(得分:4)
您正在寻找mapped type:
type IDerived = { [K in keyof IOriginal]: Reducer<IOriginal[K]> };