Это не работает, но я хочу сделать что-то вроде этого:
type ProxyNestedKeys<O> = {
[P in Extract<keyof O, string> Q in Extract<keyof O[P], string>]: boolean
}
так что ProxyNestedKeys могут быть проиндексированы вложенными свойствами O.
Например, если бы я создавал библиотеку проверки, которая делала следующее:
const schema = {
foo: {
minVal: 2,
maxVal: 5
}
}
const state = { foo: 6 }
const result = validate(schema, state)
// result
{
foo: {
$isValid: false
$validations: {
minVal: true
maxVal: false
}
}
}
Итак, результат - это то, что я пытаюсь напечатать, и у меня это получилось:
// S is the state and V is the schema
type Validation<S, V> = {
[K in Extract<keyof S, keyof V>]: Validation<S[K], V[K]>
} & {
$isValid: boolean
$validations: what goes here?
}
Мне не нужно рекурсивно получать все реквизиты еще на один уровень в глубину.