TypeScript `не присваивается` для, казалось бы, идентичного типа - PullRequest
1 голос
/ 22 апреля 2020

В следующем коде TypeScript выдает ошибку «1001 *» в присваивании obj [key], хотя мне кажется, что все должно быть в порядке.

type Function <P extends any[], O> = (...params: P) => O

type Z <K extends string | number | symbol, P extends any[], O> = {
  [key in K]: Function<P, O>
}

/**
 * Wraps an existing function to call the given function with the result.
 * The original function is functionally identical.
 */
export function consumer <
  T extends Z<K, P, O>,
  K extends keyof T,
  P extends any[],
  O
> (
  obj: T,
  key: K,
  consume: Function<[O], void>
) {
  obj[key] = (...params: P) => {
    const value = obj[key](...params)
    consume(value)
    return value
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...