[英]How to define a concatenation function in typescript
在 Typescript 如何定义一个可以支持连接的接口计算器? 喜欢:
interface Calculator {
...
}
let calcu: Calculator;
calcu(2).multiply(5).add(1)
我试过了:
interface Calculator {
(num: number): Calculator;
multiply(num: number): Calculator;
add(num: number): Calculator;
}
但是我得到了 calcu 没有实例化的错误:
Variable 'calcu' is used before being assigned
所以我的问题是如何定义接口 Calculator 以及如何实例化 calcu。
接口只是定义了一些东西的形状,你可能应该声明一个可以用new
实例化的class
。
例如
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);
(您可能还想定义一个返回内部值的 function,目前它是完全隐藏的。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.