打字稿类型限制行为

时间:2018-06-14 19:41:52

标签: javascript typescript

我对Typescript世界相对较新,而且我正在开发一个测试应用程序以让我自己习惯它。所以我有类型限制这个奇怪的(?)问题'没有工作'。

我在类成员字段中定义了一个数组:

listings: Array<ICryptListingItem> = [];

接口是:

export interface ICryptListingItem {
  name: string;
  something: number;
}

为什么编译器可以正常执行:

  this.listings = listings.data.map((listing) => {
      return {
        name: listing.name
      }
    });

listings.data.map 返回的对象没有实现数组所具有的接口类型?我不能来这里的是什么?

提前致谢。

1 个答案:

答案 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
            }
        });
    }
}

listingslistings.data的类型可能是any,因此map调用的结果也是any;然后,any始终是允许的类型,以分配给this.listings