给定:
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
}
}