Ограничение возвращаемого типа функции в TypeScript

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

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 .

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

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

Всего 1 ответ


это то, чего ты хочешь?

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

Есть идеи?

10000