Skip to content

Instantly share code, notes, and snippets.

@pointofpresence
Last active March 31, 2024 14:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pointofpresence/ba5384db46bceff8d2d4cdf7d3df2861 to your computer and use it in GitHub Desktop.
Save pointofpresence/ba5384db46bceff8d2d4cdf7d3df2861 to your computer and use it in GitHub Desktop.
Индексные типы позволяют определить тип данных для ключей объекта, которые могут быть строками, числами, символами или определенным шаблоном строк.
// Object with arbitrary string properties (like a hashmap or dictionary)
{ [key: string]: Type; }
{ [key: number]: Type; }
{ [key: symbol]: Type; }
{ [key: `data-${string}`]: Type; }
/*
Индексные типы позволяют определить тип данных для ключей объекта, которые могут быть строками, числами, символами
или определенным шаблоном строк.
{ [key: string]: Type; } - Этот код определяет объект, у которого ключи могут быть строками, а значения - заданным
типом Type. То есть, объект может содержать любые свойства с ключами типа string, и значения свойств будут иметь тип Type.
{ [key: number]: Type; } - Здесь определен объект, ключами которого являются числа, а значения имеют тип Type.
То есть, объект может содержать любые свойства с ключами типа number, и значения свойств будут иметь тип Type.
{ [key: symbol]: Type; } - В данном случае определен объект, у которого ключами выступают символы (symbol),
а значения имеют тип Type. Объект может содержать любые свойства с ключами типа symbol, и значения свойств
будут иметь тип Type.
{ [key: data-${string}]: Type; } - Здесь используется шаблон строк для определения ключей объекта. Ключи имеют
формат data-${string}, то есть строка, начинающаяся с "data-" и за которой следует любая строка (string).
Значения свойств имеют тип Type. Например, ключи могут быть "data-foo", "data-bar", и так далее.
Этот подход позволяет гибко определять типы объектов с различными типами ключей и значений для удовлетворения
конкретных требований в программе.
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment