Как затипизировать вызов методов класса?

В TypeScript типизация вызовов методов классов достигается путем определения типов аргументов и возвращаемого значения для каждого метода. Для этого необходимо использовать синтаксис определения типов функций.

Для начала, необходимо создать интерфейс, описывающий структуру класса, включая все методы, которые класс может иметь. Например, если у вас есть класс "Person" с методами "sayHello" и "sayGoodbye", то вы можете создать интерфейс следующим образом:

interface IPerson {
  sayHello(name: string): void;
  sayGoodbye(): string;
}

Здесь мы определяем структуру интерфейса, где "sayHello" принимает строку "name" в качестве аргумента и не возвращает ничего (void), а "sayGoodbye" не принимает аргументов и возвращает строку.

Затем, вы можете создать класс, который реализует этот интерфейс. Например:

class Person implements IPerson {
  sayHello(name: string): void {
    console.log("Hello, " + name);
  }

  sayGoodbye(): string {
    return "Goodbye!";
  }
}

Здесь класс "Person" реализует интерфейс "IPerson" и определяет методы "sayHello" и "sayGoodbye" с соответствующими аргументами и возвращаемыми значениями.

Теперь, когда вы создаете экземпляр класса "Person", компилятор TypeScript будет проверять, что вы вызываете методы с правильными аргументами и используете правильные типы возвращаемых значений. Например:

const person = new Person();
person.sayHello("Alice"); // Выведет "Hello, Alice"
console.log(person.sayGoodbye()); // Выведет "Goodbye!"

Если вы попытаетесь вызвать метод с неправильными аргументами или присвоить результат вызова метода переменной неправильного типа, компилятор TypeScript выдаст соответствующую ошибку.

Таким образом, типизация вызовов методов класса в TypeScript гарантирует большую безопасность и помогает предотвратить ошибки на этапе компиляции.