Я пытаюсь достичь интуитивного результата, утверждая, что некоторый общий P является частичным O.
declare function foo<O, P extends Partial<O>>(obj: O, part: P): P
Однако, это позволяет ключам не O для P
// no errors
foo({a:2},{a:100, b:2})
Это
declare function foo<O, P>(obj: O, part: P & Partial<O>): P
также не работает * Эта версия работает
declare function foo<O, P>(obj: O, part: Partial<O>): unknown
// correct, Typescript complains that `b` is not allowed
foo({a:2},{a:100, b:2})
, однако тип возвращаемого значения не может использовать универсальный P.
Существует ли решение, ограничивающее P ключамив O и выполнены ли общие требования?
- Обновление
Для всех, кто интересуется, я опубликовал суть с некоторыми полезными частичными типами, которые не допускают избыточных свойств
https://gist.github.com/babakness/a1ca775f81097ffae04098a8cfdadc60