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