在Typescript中,我如何定义可以支持串联的接口Calculator? 喜欢:
interface Calculator {
...
}
let calcu: Calculator;
calcu(2).multiply(5).add(1)
我尝试过:
interface Calculator {
(num: number): Calculator;
multiply(num: number): Calculator;
add(num: number): Calculator;
}
但是我得到了未实例化计算的错误:
Variable 'calcu' is used before being assigned
所以我的问题是如何定义接口计算器以及如何实例化计算。
答案 0 :(得分:3)
接口只是定义事物的形状,您可能应该声明一个class
,可以用new
对其进行实例化。
例如
class Calculator
{
constructor(public num: number) { }
multiply(num: number)
{
this.num *= num;
return this;
}
add(num: number)
{
this.num += num;
return this;
}
}
const calcu = new Calculator(2);
calcu.multiply(5).add(1);
console.log(calcu.num);
如果您想直接使用界面和普通对象,那是可能的,但是很麻烦,例如:
const calcu: Calculator = (() =>
{
let value;
const fun = function (num: number)
{
value = num;
return fun;
};
fun['multiply'] = (num: number) =>
{
value *= num;
return fun;
};
fun['add'] = (num: number) =>
{
value += num;
return fun;
};
return fun;
})();
calcu(2).multiply(5).add(1);
(您可能还想定义一个返回内部值的函数,当前它完全被隐藏。)