如何访问索引器下面嵌套类型中的属性类型



给定:

interface Example {
items: {
[k: string]: {
name: string;
value: {
subName: {
subValue: string;
};
};
};
};
};

可以为items创建一个具有查找类型的类型:

type Items = Example['items'];

但是,如果我想获得索引器下面的类型,该怎么办?

type SubItems = Example['items']['']['value'];

以上内容不起作用。是否有方法访问value对象的类型?

这是有效的:

type SubItems = Example["items"][string]["value"];

您可以分层访问它。请看这个:

interface Example {
items: {
[k: string]: {
name: string;
value: {
subName: {
subValue: string;
};
};
};
};
}
var example = {
items:{
'item':{
name:'1',
value:{
subName:{
subValue:'2'
}
}
}
} 
} as Example
console.log(example['items']['item']['value']['subName']['subValue']); //2

反过来做。明确指定您的类型:

interface ItemValue {
subName: { subValue: string }
}
interface Item {
name: string;
value: ItemValue;
}
interface Example {
items: {
[k: string]: Item
}
}

最新更新