Типографская структура набора типов, позволяющая указать уникальный идентификатор элемента - PullRequest
0 голосов
/ 09 апреля 2020

Предположим, что у меня есть такой объект:

interface FoodItem {
  id: string
  name: string
  ...
}

В моем приложении я хочу сохранить все FoodItems в Set, но хочу однозначно идентифицировать элементы по foodItem.id.

Пример:

# Given
const tuna1 = {id:"tuna", name: "Good Tuna"}
const tuna2 = {id:"tuna", name: "Other Tuna"}

function getItemIdentifier(food: FoodItem): string {
  return food.id
}

cosnt myFood = new Set(getItemIdentifier)

# When
myFood.add(tuna1)
myFood.add(tuna2)

# Then
assert myFood.size() === 1
assert myFood.get("tuna").name === "Good Tuna" || myFood.get("tuna").name === "Other Tuna"

Я знаю, что могу использовать Map для этого, но мне не нравится дублировать идентификатор. Эти могут выйти из-под контроля c и привести к забавным ошибкам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...