тип макета, такой как "{[id: string]: Details} | null" в Typescript - PullRequest
0 голосов
/ 20 января 2020

Привет, я получил этот тип, как в заголовке {[id: string]: Details}|null, а интерфейс Details похож на это

export interface Details
{
  id: number;
  name: string;
  info: string;
}

Как бы я это высмеял? я имею в виду, что могу легко смоделировать часть «Детали» следующим образом

getDetails(): Details {

       const detailsOne =  (): Details => {
           return {
                id: 300,
                name: "Some Name",
                info: "Some Info"
          } as Details
      }

      return detailsOne();
}

Но у меня возникают проблемы с пониманием того, как вернуть ее в [id: string]

1 Ответ

1 голос
/ 20 января 2020

Тип {[id: string]: Details}|null совпадает с Record<string, Details> | null и имеет следующее структурное представление:

type T = Record<string, Details> | null;
const a: T = {
  'anyString': {
      id: 300,
      name: "Some Name",
      info: "Some Info"
  }
}
// or
const b: T = null

Тип T имеет два допустимых элемента - key->value сопоставление с string ключами и Details объекты как значения или null

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