Задать вопрос
@camradee

Что означает данное ниже определение в Typescript?

Изучаю TS и по кускам вроде понятно, а все вместе нет целой картины. Что делает эта запись?
const someVariable: string[] | Record<string, any>[] = [
      "id",
      "name",
      "description",
      {
        "fullPrice": "price"
      },
      {
        "qty": "quantity"
      }
    ]
  • Вопрос задан
  • 369 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347 Куратор тега TypeScript
Crazy on performance...
Тип Record - это утилити тип из стандартной библиотеки TS, который описывает объект, у которого ключи - первый аргумент дженерика, а значения - второй.
Тип string[] | Record<string, any>[] - это или массив строк или массив объектов (ключ - любая строка, значение любого типа). Данный тип не позволит смешивать строки и объекты в одном массиве, либо то либо другое.
Как верно подметил WbICHA в комментарии к вопросу, для приведенных данных корректный тип - это (string | Record<string, any>)[] (массив из строк или объектов в перемешку).

Ну и вместо any лучше использовать unknown, any - это тип без проверки типов, unknown - это тип который включает в себя все другие типы, в него как и в any тоже можно записать значение любого типа, но в отличии от any при использовании unknown нужно делать либо явное приведение типов, либо рантайм проверки типов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы