1
正如您所知,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;
,我很难过。
认为有一个更好的方法,但我想这就是它。它有诀窍。谢谢 –