首页 > 解决方案 > 我需要具有该值的属性类型以使验证更容易

问题描述

我需要打字稿打字方面的帮助。我想要一个具有相同键的类型和一个包含键值类型的函数:)。

也许有人可以帮助我,我在这里添加这个例子我想要实现的

export const useFormValidation = <T>(state: T, validator: Validator<T>) => {
  console.log(state, validator);
};

验证应该是这样的 if

type Person {
  name: string;
  active: boolean;
  hobbies?: Array<string>;
} 

如果我使用该函数,则为 Validator 生成的类型应该是这样的

useFormValidation({name: 'michi', active: true},需要的类型)

类型 -> 应该是

{ 
  name: (value: string) => boolean,
  active: (value: boolean) => boolean,
  hobbies: (value: Array<string>) => boolean,
}

标签: typescripttypescript-typings

解决方案


一个朋友帮我解决了

export type Validator<T> = (value: T) => Promise<boolean> | boolean;

export type Validation<T extends { [key: string]: any }, K extends keyof Required<T>> = {
  [P in K]: Validator<T[P]>;
};

export const useFormValidation = <T>(state: Required<T>, validator: Validation<T, keyof T>) => {
   ---implementation---
};

推荐阅读