TypeScript 基本类型中的字符串键值类型

5uzkadbs  于 2022-10-29  发布在  TypeScript
关注(0)|答案(4)|浏览(264)

检索词

类型脚本字符串键值类型

建议

添加一个额外的大量使用的类型-简单的对象与字符串键,使用了很多作为“原始Map”。
每次写{ [ key: string ]: T }都很累。
想把export type StrMap<T> = { [ key: string ]: T };作为基本类型之一。
对象中的键与字符串(Object.keys(_object).join('/'))的距离并不太远。
这与#26797并不完全相关,因为它是一个更广泛的用例,恕我直言。

用例

我使用这种类型在众多的项目在众多的模块.
示例

检查清单

我的建议符合以下准则:

  • 这不会是对现有TypeScript/JavaScript代码的重大更改
  • 这不会改变现有JavaScript代码的运行时行为
  • 这可以在不基于表达式的类型发出不同JS的情况下实现
  • 这不是运行时功能(例如,库功能、带有JavaScript输出的非ECMAScript语法等)
  • 这个特性将与TypeScript's Design Goals的其余部分一致。
busg9geu

busg9geu1#

有什么想法?
虽然Record<T1, T2>在某些用例(如Map类型)中有它的优点,但我发现自己写Record<string,比写其他任何东西都要多。
我通过我的GitHub项目做了一个quick search来查看第一个类型参数:

  • 几乎所有事件均为string
  • 两个匹配项是字符串枚举
  • 两次事件为keyof something
pzfprimi

pzfprimi2#

Record<string, T>已经很短了(而且打字也不那么烦人了)。有什么想法吗?

wj8zmpe1

wj8zmpe13#

抱歉,我发现记录的描述非常差。
意义是非常重要的,作为Map的Object是重要的意义。
有很多比较的帖子比较Map和对象。
我也这样做,如果对象的数量少于一千,我就用Object,因为它的代码少得多。
Record<string, T>并不比Something<T>短。
我的观点是,stringkey对于基于这个事实创建类型同样有用。

bn31dyow

bn31dyow4#

关联数组--在其他语言中也有这样的原语。这就是我要讨论的))

相关问题