«Типы аргументов не соответствуют параметрам» (TypeScript и Ramda) - PullRequest
0 голосов
/ 19 апреля 2020

Я использую Ramda в проекте Angular (и, следовательно, с TypeScript), и когда я использую некоторые функции Ramda, такие как R.prop, я получаю ошибки, такие как "Типы аргументов не соответствуют параметрам" или похожие. Например, для R.prop in:

function foobar() {
    return R.sortBy(
        R.prop('code'),
        /* ... */
    );
}

Но когда я изменяю вызов R.prop('code') на R.prop<string>('code'), все работает нормально. Как я могу избежать таких явных объявлений? Есть ли какой-либо флаг tsconfig, который я пропускаю?

Примечание: объявление TS для R.prop:

/**
 * Returns a function that when supplied an object returns the indicated property of that object, if it exists.
 */
export function prop<T>(__: Placeholder, obj: T): <P extends keyof T>(p: P) => T[P];
export function prop<P extends keyof T, T>(p: P, obj: T): T[P];
export function prop<P extends string>(p: P): <T>(obj: Record<P, T>) => T;
export function prop<P extends string, T>(p: P): (obj: Record<P, T>) => T;
...