如何从打字稿集合中合并字典?

问题描述 投票:0回答:1

我已将 typescript-collection 包安装到我的 Angular 项目中以使用 Dictionary 类型。 我想将社交媒体上的所有最新帖子以及图像发布日期保存在字典中。之后我想将所有词典合并为一本词典。

let TwitterPosts = this.getLatestTwitterPosts();
let InstagramPosts = this.getLatestInstagramPosts();
let FacebookPosts = this.getLatestsFacebookPosts();

getLatests[type]Posts-Methods 是这样的:

const type = 'twitter';
let TwitterPosts = new Collections.Dictionary<number, PostSocialmediaFeedComponent>();
for (let count = 0; count < 10; count++) {
  let PostedDate: Date;
  let url: string;
  // USING THE API TO GET THE VALUES
  TwitterPosts.setValue(count, new PostSocialmediaFeedComponent(url, PostedDate, type));
}
return TwitterPosts;
typescript dictionary collections merge
1个回答
1
投票

只需使用一个简单的对象,合并就变得微不足道,并且在语法上得到支持。不要在不需要的复杂库上浪费时间。

const type = 'twitter';
const twitterPosts: {[key: number]: PostSocialmediaFeedComponent} = {};
for (let count = 0; count < 10; count++) {
  // USING THE API TO GET THE VALUES
  twitterPosts[count] = new PostSocialmediaFeedComponent(url, PostedDate, type);
}
return TwitterPosts;

除了简化依赖关系并使代码更简单之外,使用对象还为您提供了对简单合并的语法支持。

const twitterPosts = this.getLatestTwitterPosts();
const instagramPosts = this.getLatestInstagramPosts();
const facebookPosts = this.getLatestsFacebookPosts();

const merged = {
  ...twitterPosts,
  ...instagramPosts,
  ...facebookPosts
};

这是内置 ECMAScript 标准库功能的有效语法糖

Object.assign

const merged = Object.assign({}, twitterPosts, instagramPosts, facebookPosts);
© www.soinside.com 2019 - 2024. All rights reserved.