我在Typescript手册中看到了这个例子:
interface Counter {
(start: number): string;
interval: number;
reset(): void;
}
var c: Counter;
c(10);
c.reset();
c.interval = 5.0;
但是当我尝试c(10);
或设置c.interval = 5.0
时,我收到错误消息 -
无法设置未定义的属性'interval'
我知道我能做到:
var c: Counter;
c = function(s: number){
return "'" + s + "'";
}
缺少什么 - (或者这是一个不完整的例子)?
更新
There is a similar question - 这回答了这个问题,尽管如此,我仍然觉得这个例子很复杂。
答案 0 :(得分:5)
要完成Typescript手册中的示例:
interface Counter {
(start: number): string;
interval: number;
reset(): void;
}
function createCounter():Counter{
var counter = <Counter>function(start:number){};
counter.interval = 123;
counter.reset = function(){};
return counter;
}
createCounter()(10);
createCounter().reset();
或
var getCounter = createCounter();
getCounter(10);
getCounter.reset();