Typescript: Reference Generi c Тип из значения для использования в качестве типа в другом месте - PullRequest
0 голосов
/ 04 мая 2020

Имеется следующий код:

// file1.ts
interface X { ... } // Don't want to directly export this (private/internal)

// Assume LibInterface<T> is some random interface from an external library
export const func: (arg: LibInterface<X> => string) = ...;


// file2.ts (essentially the jest test file)
import { func } from './file1';

const x: X = ...;
const arg: LibInterface<X> = ...;

expect(func(arg)).toEqual(...);

В приведенном выше, как я могу ссылаться на тип X во втором файле?

Сложный вариант использования с использованием типа X и jest-mock-extended: const mockX = mock<X>(...);

Я искал это, а также просматривал https://www.typescriptlang.org/docs/handbook/utility-types.htmlhttps: // www.typescriptlang.org/docs/handbook/utility-types.html, но нашел решение.

1 Ответ

0 голосов
/ 04 мая 2020

Можете ли вы добавить универсальный тип c в функцию? Было бы что-то вроде:

// file1.ts
interface X { ... } // Don't want to directly export this (private/internal)

// Assume LibInterface<T> is some random interface from an external library
export const func: <T extends X = X>(arg: LibInterface<T> => string) = ...;


// file2.ts (essentially the jest test file)
import { func } from './file1';

const x: X = ...;
const arg: LibInterface<X> = ...;

expect(func(arg)).toEqual(...);
...