Как объединить словари из машинописной коллекции? - PullRequest
0 голосов
/ 01 июля 2019

Я установил пакет typcript-collection в свой проект Angular, чтобы использовать тип Dictionary.Я хочу сохранить все последние сообщения из Socialmedia в словаре с датой публикации изображения.После этого я хочу объединить все словари в один словарь.

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

Методы сообщений getLatests [тип] выглядят так:

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;

1 Ответ

0 голосов
/ 01 июля 2019

Просто используйте простой объект, и объединение становится тривиальным и синтаксически поддерживается при этом. Не тратьте время на сложные библиотеки, которые вам не нужны.

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);
...