Что значит const: {[c: string]: boolean} = {} означает? - PullRequest
1 голос
/ 28 июня 2019

Я получил упражнение от наставника:

Определите, является ли слово или фраза изограммой.

Изограмма (также известная как «непатентованное слово») - это слово или фраза без повторяющейся буквы, однако пробелы и дефисы могут появляться несколько раз.

Примеры изограмм:

lumberjacks
background
downstream
six-year-old

Слово изограммы, однако, не является изограммой, потому что s повторяется.

чтобы описать, что означает этот код. Все хорошо, но я не понял смысла четвертой строки.

    export default class Isogram {
      public static isIsogram(input: string): boolean {
        const chars = [...input.toLowerCase()]
        const counts: { [c: string]: boolean } = {}

        for (const char of chars) {
          if (!this.isLetter(char)) {
            continue
          }

          if (counts[char] !== undefined) {
            return false
          }

          counts[char] = true
        }

        return true
      }

      private static isLetter(char: string): boolean {
        return char.toUpperCase() !== char.toLowerCase()
      }
    }


1 Ответ

3 голосов
/ 28 июня 2019

Он называется тип индекса в TypeScript и позволяет использовать динамические имена свойств.

Для вашего примера:

const counts: { [c: string]: boolean } = {}

Подпись типа индекса означаетчто переменная counts будет ссылаться на объект с ключами string и значениями boolean.В этом конкретном случае переменная counts инициализируется пустым объектом ({}).

Объект, приведенный ниже, например, будет соответствовать описанному выше типу:

{
  'c': true,
  'a': false,
  'r': true
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...