用泛型包装 'K in keyof T'

Wrap 'K in keyof T' with a generic type

 type CustomFieldWrapper<T> = {
  isDirty: boolean
  value: T
}

type WrappedFormValues<T>> = {
    CustomFieldWrapper< [K in keyof T]: T[K] >
};

我想确保所有 [K in keyof T]: T[K] 也用我的 CustomFieldWrapper 包装

那我希望能够

var myfield: WrappedFormValues<{ name: string, email: string}> = {
         name: GetCustomFieldWrapper("name", "initial name value"),
         email: GetCustomFieldWrapper("email", "initial email value"),
}

现在显然我不能使用那个语法。 CustomFieldWrapper 不起作用。

:T[K] 是结果对象中字段的类型注释。你可以把你的包装类型放在那里:

type WrappedFormValues<T> = {
    [K in keyof T]: CustomFieldWrapper<T[K] >
};

Playground Link