我正在使用TypeScript编写(玩具)哈希和缓存装饰器,但找不到创建实体通用装置的好方法。
到目前为止我的代码是
args
当然这会失败,因为Map<T, U>
不是元组而是列表,这是可变的[1]。因此,每个输入,即使它一遍又一遍地相同,也会在自己的内存位置获得自己的列表/数组,并使用自己的哈希值,无论来自哪里。
我还没有在TypeScript(或JS)中找到Tuple类型 - 是否有一个?这种问题还有另一种解决方法吗?
T
应该IHashable
限制实施loop.screen.set_terminal_properties(colors=256)
或其他什么,对吧?这是类型的重点 - 在你需要花费大量时间之前提出这个问题。 答案 0 :(得分:0)
这不应该是一个错误吗?
Map<T, U>
应该限制T实施IHashable或者其他什么,对吗?
没有。对象标识在JavaScript中是一个真实且定义明确的东西; TypeScript不会强制您假装它不存在。
如果ECMAScript委员会认为在地图中强制执行基于非对象身份的键控是合适的,那么他们可能会限制Map
个键,但他们没有。