【发布时间】:2017-11-25 00:43:22
【问题描述】:
我找不到这个问题的好资源。本质上,我想使用 TypeScript 中的接口来描述我的数据的类型,但我的数据是 Immutable.js 记录,这似乎使事情变得复杂,请参阅下面的示例。
interface tree extends Immutable.Map<string, any> {
readonly id: number,
readonly type: number
}
let trees = Immutable.List<tree[]>([
Map<tree>({
id: 101,
type: 1
}),
Map<tree>({
id: 201,
type: 3
})
])
以上问题:
- 为什么我必须重复列表中每个地图的类型?创建列表时不应该简单地由
<tree[]>声明类型吗?然后对添加到列表中的任何地图进行类型检查? - 目前此示例错误,指出“属性 'id' 与索引签名不兼容。类型 'number' 不可分配给类型 'tree'。这是有道理的!但是,阅读文档,我无法工作怎么让它工作?阅读文档,它说我需要一个 ID,但我想要一个地图数组,如果我没弄错的话,在这种情况下我的签名只是标准数组 ID?
我已经为此工作了好几天,但我根本无法让它工作,根据我所阅读的所有内容,它应该很简单。
任何帮助将不胜感激。
【问题讨论】:
-
我不熟悉 Immutable.js,但我试过了,它编译得很好,适合我在列表中使用
Immutable.Map({id: 101, type: 1})。根据他们的任何类型,调用Map<tree>没有意义。
标签: javascript angular typescript immutable.js