Машинопись какого типа объекта: "{[name: string]: string}"? - PullRequest
0 голосов
/ 25 сентября 2019

Я начал работать с угловыми HttpHeaders, но не смог понять один из параметров его конструктора: [имя: строка]: строка , вот конструктор из документов:

constructor(headers?: string | { **[name: string]: string** | string[]; })

Кто-нибудь может объяснить тип этого объекта или на что он ссылается?

Ответы [ 3 ]

3 голосов
/ 25 сентября 2019

Это называется индексная подпись .

Таким образом, полное объявление типа, которым вы поделились headers?: string | { [name: string]: string | string[]; }, говорит, что headers может быть 1 из 2 типов: строка илиобъект определенной формы.

Например:

  • строка : "some value"
  • объект (сзначение string): { some: "value" }
  • объект (со значением string[]): { some: ["value", "foo"] }

подпись индекса { [name: string]: string | string[]; }в частности говорится, что любой ключ name, который является строкой, может использоваться, и его значение может быть либо string, либо массивом строк (string[]).name в [name: string] на самом деле не имеет значения.

0 голосов
/ 25 сентября 2019

Это способ объявления объекта, или вы можете сказать словарь, пара ключ / значение.Если вам не нужно определять свойства (отличные от интерфейса), вы просто говорите, что ключ будет иметь тип string и значение типа (в данном случае) string | string[].

например, когда вы устанавливаете заголовки как {'Accept': 'application/json'}, вы создаете пару, в которой ключ равен 'Accept', типа string, а значение этого ключа равно 'application/json', также типа string.

Этот способ объявления типа дает вам, конечно, несколько динамических свойств, так что вы можете получить:

const headers = {
  'Accept': 'application/json',
  'Authorization': `Bearer ${jwt}`,
};
0 голосов
/ 25 сентября 2019

Это означает, что вы можете просто передать заголовки как одну строку или список объектов с определениями заголовков строк.Если вы ищете лучший способ установить заголовки, проверьте это:

 let headers: HttpHeaders = new HttpHeaders();
    headers = headers.append(
    'Accept',
     'text/html,application/json,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0. 8'  
    );

или ответ здесь:

Как правильно установить заголовок запроса Http в Angular 2

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