Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 如何按索引访问映射类型_Typescript - Fatal编程技术网

Typescript 如何按索引访问映射类型

Typescript 如何按索引访问映射类型,typescript,Typescript,我试图对以下行为进行思考,假设我有以下类型定义 类型RMap={ a:{foo:string} b:{foo:unknown} } 类型RType=RMap的键 类型RState={ [k:字符串]:{ s:RMap[RType] } } 鉴于这些,下面的f1和f2之间有什么区别?为什么第一个不编译 声明常量映射:RState 函数f1(k:string,f:(r:RMap[r])=>void:void{ f(映射[k].s) } 函数f2(k:string,f:(r:RMap[RType])

我试图对以下行为进行思考,假设我有以下类型定义

类型RMap={
a:{foo:string}
b:{foo:unknown}
}
类型RType=RMap的键
类型RState={
[k:字符串]:{
s:RMap[RType]
}
}
鉴于这些,下面的
f1
f2
之间有什么区别?为什么第一个不编译

声明常量映射:RState
函数f1(k:string,f:(r:RMap[r])=>void:void{
f(映射[k].s)
}
函数f2(k:string,f:(r:RMap[RType])=>void:void{
f(映射[k].s)
}

它不起作用,因为
R扩展RType
RType

RType
'a'|'b'
,没有其他选项


R扩展RType
适合
'a'|'b'|'c'
,这会破坏
R:RMap[意外的\u键]

它不起作用,因为
R扩展RType
RType
更宽

RType
'a'|'b'
,没有其他选项

R扩展RType
fits
'a'|'b'|'c'
,这会打断
R:RMap[意外的\u键]