Об определении интерфейса машинописного текста - PullRequest
1 голос
/ 31 марта 2020

У меня есть функция A, которая будет возвращать функцию B. Параметром функции B является объект C. C имеет свойство с именем D, типом которого является T.

T определяется, когда я получаю B, что означает, что я могу установить T, когда я вызываю A или другими способами.

Так как определить это в машинописи? Большое спасибо.


Я пробовал это, которое будет работать. Но это не то, что я хочу:

interface C<T> {
    d: T;
    e: number;
}

interface B<T> {
    (param: C<T>): void;
}

interface A<T> {
    (): B<T>;
}

const a: A<number> = () => ({d, e}) => {
    console.log(d, e)
};

Вещи, которые я хочу, могут быть примерно такими:

const a: A = () => ({d, e}) => {
    console.log(d, e)
};
const b1 = a<number>();
const b2 = a<string>();

Я понятия не имею об этом.

1 Ответ

2 голосов
/ 31 марта 2020

Вы на правильном пути, я считаю, что он чище с типами, а не с интерфейсами:

interface C<T> {
    d: T;
    e: number;
}

type B<T> = (params: C<T>) => void

type A = <T>() => B<T>

// or inlined : type A = <T>() => (params: C<T>) => void

const a: A = () => ({d, e}) => {
    console.log(d, e)
};

const withNumber = a<number>();
const withString = a<string>();
...