Функция, которая принимает частичный интерфейс и возвращает буквальный параметр - PullRequest
0 голосов
/ 06 июня 2019

Я хочу объявить универсальную функцию, которая принимает частичный интерфейс в качестве параметра и возвращает этот литеральный параметр.

Я пробовал эти подписи безрезультатно:

  1. не ограничивает свойства и позволяет передавать любой ключ:
function setContextValue<V extends Partial<Context>>(values: V): V;
Возвращает Partial<Context>, что близко, но я хочу специально вернуть только разрешенные ключи values:
function setContextValue(values: Partial<Context>): typeof values;
Ближайшее, что у меня есть.Он правильно применяет частичный интерфейс, но возвращает свойства, не являющиеся членами, в виде never.
function setContextValue<V extends { [K in keyof V]: K extends keyof Context ? V[K] : never }>(values: V): V;

Является ли # 3 лучшим решением? Это невозможноуказать, что тип возвращаемого значения Pick<V, keyof Context>?

Спасибо!

...