我对Typescript世界相对较新,而且我正在开发一个测试应用程序以让我自己习惯它。所以我有类型限制这个奇怪的(?)问题'没有工作'。
我在类成员字段中定义了一个数组:
listings: Array<ICryptListingItem> = [];
接口是:
export interface ICryptListingItem {
name: string;
something: number;
}
为什么编译器可以正常执行:
this.listings = listings.data.map((listing) => {
return {
name: listing.name
}
});
从 listings.data.map 返回的对象没有实现数组所具有的接口类型?我不能来这里的是什么?
提前致谢。
答案 0 :(得分:1)
TypeScript会自动处理;您的代码示例缺少一些信息。例如:
export interface ICryptListingItem {
name: string;
something: number;
}
class MyThing {
listings: Array<ICryptListingItem> = [];
doSomething() {
const listings = {
data: [
{ name: "the keeper" },
{ name: "the seeker" }
]
};
// Error here, as expected
this.listings = listings.data.map((listing) => {
return {
name: listing.name
}
});
}
}
listings
或listings.data
的类型可能是any
,因此map
调用的结果也是any
;然后,any
始终是允许的类型,以分配给this.listings
。