1
JavaScriptの関数は、任意のオブジェクトとしてプロパティを持つことができます。例えば、(優れたJavaScriptから取ら:Definitive Guideの、第6編、P 178)は、メモ化配列としての機能を使って階乗を計算する:関数のプロパティを使用して関数のインターフェイスを定義する
interface Factorial {
(n: number) : number;
[ index: number ]: number;
}
:私は次のインタフェースを定義する試み
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;
しかし、コンパイラは私にそれを教えているType '(n: number) => number' is not assignable to type 'Factorial'. Index signature is missing in type '(n: number) => number'
。 私は明白なことをすることができず、関数内にprivate index: number;
を定義するだけで、私は困惑しています。
良い方法がありましたが、これはそれだと思います。それはトリックです。ありがとう –