typescript - 我需要具有该值的属性类型以使验证更容易
问题描述
我需要打字稿打字方面的帮助。我想要一个具有相同键的类型和一个包含键值类型的函数:)。
也许有人可以帮助我,我在这里添加这个例子我想要实现的
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,
}
解决方案
一个朋友帮我解决了
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---
};