gpt4 book ai didi

javascript - 如何优化此计算器中的类型描述?

转载 作者:行者123 更新时间:2023-11-30 11:14:14 26 4
gpt4 key购买 nike

我是 TypeScript 的新手,请告诉我如何优化这段代码中的数据类型,我不会一直写 number。我读到它可以完成,通过 generics 告诉我如何正确和简要地描述这段代码

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;

add(num:number) {
return this._res = num + num;
}

subtract(num:number) {
return this._res = num - num;
}

multiply(num:number) {
return this._res = num * num;
}

divide(num:number) {
return this._res = num / num;
}

print():void {
console.log(`Currently value: ${this._res}`);
}
}
let calc1 = new Calculator();
calc1.add(1);calc1.add(1);
calc1.print();

最佳答案

由于您已经为接口(interface)中的每个函数编写了类型定义,因此您可以在定义它们时跳过向它们重新添加类型的步骤。

这在类型方面是相同的:

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;

add(num) {
return this._res = num + num;
}

subtract(num) {
return this._res = num - num;
}

multiply(num) {
return this._res = num * num;
}

divide(num) {
return this._res = num / num;
}

print() {
console.log(`Currently value: ${this._res}`);
}
}

您还可以定义函数类型以进行更多重构:

type NumberOperation = (num: number) => number

interface ICalculator {
add: NumberOperation
subtract: NumberOperation
multiply: NumberOperation
divide: NumberOperation
print(): void;
}

编辑: Titian Cernicova-Dragomir 是正确的 永远不会推断类方法参数,它们将被隐式类型化为任何

如果您不想在类中键入每个函数,您可以在声明类实例时使用接口(interface):

const calc: ICalculator = new Calculator()

calc.add('string') // type error

关于javascript - 如何优化此计算器中的类型描述?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52295220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com