typescript - 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()
}
}
解决方案
它在 TypeScript 中称为索引类型,并允许您使用动态属性名称。
对于您的示例:
const counts: { [c: string]: boolean } = {}
索引类型签名表示该counts
变量将引用具有string
键和boolean
值的对象。在这种特定情况下,counts
变量使用空对象 ( {}
) 进行初始化。
例如,下面的对象将符合上述类型:
{
'c': true,
'a': false,
'r': true
}
推荐阅读
- xml - 为每个子标签添加包装标签 - XSL 转换
- javascript - D3 中元素的大小调整未产生预期的输出
- firebase - Flutter firebase 包在发布模式下不工作
- multithreading - Rust:为什么lazy_static 不适用于某些类型
- python - 如何获得元组中的所有最小值?
- copy - 复制 JHipster 中的实体条目
- python - 正则表达式以
- apache-spark-sql - 如何分箱数据并在火花中找到百分比,并显示它?
- mysql - 插入重复值而不更改分配给第一个非重复值的主键
- python - 如何使用子图和 Seaborn Lineplot 仅在图外的框中显示图例?