Ограничение возвращаемого типа функции в TypeScript - PullRequest
0 голосов
/ 27 марта 2020

Допустим, у меня есть следующий класс.

class MyClass {
  firstMethod: (a: string) => string;
  secondMethod: (b: number) => number;
}

Я хочу создать функцию, которая принимает этот класс в качестве первого аргумента. Это должно сообщить тип возвращаемого типа второго аргумента, функции. Независимо от структурной типизации, я надеюсь ограничить поля возвращаемого типа теми, которые определены в MyClass. Например:

Хорошо:

myFunction(MyClass, () => {
  return {
    firstMethod: (a) => a,
    secondMethod: (b) => b,
  };
});

Плохо:

myFunction(MyClass, () => {
  return {
    firstMethod: (a) => a,
    secondMethod: (b) => b,
    thirdMethod: (c: boolean) => c,
  };
});

Дополнительное поле должно привести к ошибке типа. Как и при изменении типов firstMethod и secondMethod.

Прямо сейчас, я безуспешно пытаюсь как this .

Любая помощь будет принята с благодарностью. Спасибо!

1 Ответ

0 голосов
/ 27 марта 2020

это то, что вы хотите?

const myFunction = (a : MyClass): MyClass => {
  return {
    firstMethod: (a: string) => a,
    secondMethod: (b: number) => b,
  };
}
...