我在尝试使用定义索引器的接口并将其与系统类型 number[] 一起使用时偶然发现了一些困难。该接口的原因是我希望能够传递具有数字索引器而不是返回数字的任何类型,就像 number[] 和类型化数组实例的情况一样。
考虑:
interface IIndexedNumeric
{
[index: number]: number;
}
class buffer {
// ...
push(vals: IIndexedNumeric) { ... }
}
// problem usage:
var ary: number[] = [1,2,3];
var foo = new buffer();
foo.push(ary); // error
// Supplied parameters do not match any signature of call target:
// Could not apply type 'IIndexedNumeric' to argument 1, which is of type 'number[]'
这应该发生吗?似乎 number[] 应该在结构上完全实现 IIndexedNumeric。如果我只是搞砸了一些事情,请帮我看看我的错误。如果没有,你能想到一个解决方法吗?