通过类型属性访问通用数组

时间:2018-12-18 19:51:45

标签: typescript

我有一个文件要解析,并且想为其标题定义一个类型,并将数据的开头强制转换为该类型,以便在代码中更轻松地使用而不是使用索引。简化的例子可能是这样:

type T = {
  id: string,
  value: number
}

let data = ['demoID', 123, ...];
let id = ((data as any) as T).id;
// error occurs as .id is not 0th index

如何使我的想法在Typescript中实现?

2 个答案:

答案 0 :(得分:0)

您想要做的是:

'id' must have the type of T.id

(口头上)有意义。但是,这不是在TypeScript中执行的方法。 T.id的类型string,所以您应该这样做

let id = data[0] as string;

这将允许您进一步编写代码,如下所示:

let t: T = {
    id: id, // no need to cast :)
    value: 10
}

答案 1 :(得分:-2)

您正尝试从位置结构切换为关联/命名结构。为什么不将构造函数或工厂函数添加到如下所示的类型T中:

constructor(id, value, ...rest){

this.id = id;
this.value = value;
// etc
}