【发布时间】:2017-11-24 14:32:48
【问题描述】:
您可能知道,JavaScript 中的函数可以像任何对象一样具有属性。例如(摘自优秀的 JavaScript:权威指南,第 6 版,第 178 页)使用函数作为记忆数组计算阶乘:
function factorial(n: number): number {
if (isFinite(n) && n > 0 && n == Math.round(n)) {
if (!(n in factorial))
factorial[n] = n * factorial(n - 1);
return factorial[n];
}
else
return NaN;
}
factorial[1] = 1;
我尝试定义以下接口:
interface Factorial {
(n: number) : number;
[ index: number ]: number;
}
但是编译器告诉我Type '(n: number) => number' is not assignable to type 'Factorial'. Index signature is missing in type '(n: number) => number'。
我不能做显而易见的事情,只是在函数内部定义private index: number;,我很难过。
【问题讨论】:
标签: function typescript interface properties