是否可以创建一个反映以下类型的接口:
const foo = Object.assign([1,2,3], {offset: 4});
我正在考虑:
interface Bar {
[key: number]: number;
offset: number;
}
但是访问数组原型(map / reduce / etc)时我仍然会出错。
答案 0 :(得分:4)
似乎您可以将您的界面Bar
扩展为Array
类:
const foo = Object.assign([1,2,3], {offset: 4});
interface Bar extends Array<Number> {
offset: number;
}
function test(a: Bar) {
console.log(a[0]);
console.log(a.length);
console.log(a.concat);
}
test(foo);
您可以阅读有关Interfaces Extending Classes
的更多信息更新: 实际上,您可以使用交集创建单独的类型,而不用创建单独的界面:
const foo = Object.assign([1,2,3], {offset: 4});
type Bar = number[] & {offset: number};
function test(a: Bar) {
console.log(a[0]);
console.log(a.length);
console.log(a.concat);
}
test(foo);