Typescript const counts:{[c:string]:boolean}={}是什么意思?

Typescript const counts:{[c:string]:boolean}={}是什么意思?,typescript,functional-programming,Typescript,Functional Programming,我从导师那里得到了练习: 确定一个单词或短语是否为等值线 等值线(也称为“非模式词”)是没有重复字母的词或短语,但空格和连字符可以多次出现 等值线示例: lumberjacks background downstream six-year-old 然而,单词isograms不是一个isogram,因为s重复 描述这种代码的和平意味着什么。一切都很好,但我不明白第四行的意思 export default class Isogram { public static isIsog

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

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

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

等值线示例:

lumberjacks
background
downstream
six-year-old
然而,单词isograms不是一个isogram,因为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()
      }
    }


它被称为in-TypeScript,允许您使用动态属性名

例如:

const counts: { [c: string]: boolean } = {}
索引类型签名表示
计数
变量将引用具有
字符串
键和
布尔值的对象。在这种特定情况下,
counts
变量用空对象(
{}
)初始化

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

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

const counts={}很简单。剩下的是类型声明-查看TypeScript手册!另一方面,type
{[c:string]:boolean}
可以用预先存在的
Record
类型声明为
Record
,它只是指具有
string
键和
boolean
值的对象。