Предположим, что у меня есть такой объект:
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 и привести к забавным ошибкам.