Класс Calculator имплементируется от ICalculator, где описаны все методы и их типы, стоит ли повторно это делать для параметров методов класса ? Если уберу, то в метод можно будет передать любой тип. Подскажите пожалуйста, как правильно написать, только начал изучать TypeScript
interface ICalculator {
add(num: number): number;
subtract(num: number): number;
multiply(num: number): number;
divide(num: number): number;
print(): void;
}
class Calculator implements ICalculator {
protected _res: number = 0;
add(num: number) {
return this._res = num + this._res ;
}
subtract(num: number) {
return this._res = this._res - num;
}
multiply(num: number) {
return this._res = num * this._res;
}
divide(num: number) {
return this._res = this._res / num;
}
print(): void {
console.log(`Currently value: ${this._res}`);
}
}
let myCalc = new Calculator();
myCalc.add(260);
myCalc.subtract(12);
myCalc.multiply(12);
myCalc.divide(2);
myCalc.print();
Делать это не обязательно.
Однако, если нужна проверка типов, в случае не указания типов параметров в самом классе, придется явно указывать интерфейс в качестве типа переменной:
let myCalc:ICalculator = new Calculator();
В этом случае, при попытке вызвать метод с несоответствующим типом параметра будет ошибка.
Пример на playground
Сборка персонального компьютера от Artline: умный выбор для современных пользователей