首页 > 解决方案 > const counts: { [c: string]: boolean } = {} 是什么意思?

问题描述

我从导师那里得到了练习:

确定一个单词或短语是否是等值线。

等值线(也称为“非模式词”)是没有重复字母的词或短语,但允许多次出现空格和连字符。

等值线示例:

lumberjacks
background
downstream
six-year-old

然而,isograms 这个词不是等值线,因为 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()
      }
    }


标签: typescriptfunctional-programming

解决方案


它在 TypeScript 中称为索引类型,并允许您使用动态属性名称。

对于您的示例:

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

索引类型签名表示该counts变量将引用具有string键和boolean值的对象。在这种特定情况下,counts变量使用空对象 ( {}) 进行初始化。

例如,下面的对象将符合上述类型:

{
  'c': true,
  'a': false,
  'r': true
}

推荐阅读