我希望能够强制执行objValidator与它验证的obj具有相同的密钥。这在TypeScript中是否可行?关于如何实现以下内容的任何想法?主要是obj和objValidator必须具有相同的键,但键值不同。
如果我的objValidator没有与obj完全相同的密钥,我希望能够收到警告。
interface obj {
alpha: number
beta: string
}
interface objValidator {
alpha: {
message: string
valid(ALPHA'S TYPE): boolean
}
beta: {
message: string
valid(BETA'S TYPE): boolean
}
}
答案 0 :(得分:2)
使用mapped types这样的事情可能:
interface Obj {
alpha: number
beta: string
}
type Validator<T> = {
[P in keyof T]: {message: string, valid: boolean};
};
let o: Obj = { alpha: 1, beta: "123" };
let v: Validator<Obj> =
{
alpha: {
message: "ok",
valid: true
},
beta: {
message: "not ok",
valid: false
}
}