Types 从rescript中的变量类型访问密钥

Types 从rescript中的变量类型访问密钥,types,rescript,Types,Rescript,我是一个很新的写手,并试图了解事情是如何运作的。在我的情况下,我希望从这样的变体类型访问密钥 type personType=Person({name:string,age:int}) 让人({ 姓名:“简”, 年龄:35岁, }) Js.log(person.name)/>错误:找不到记录字段名。 以下内容正在使用记录工作: 类型personRecord={ 名称:string, 年龄:int,, } let personAsRecord={姓名:“Bob”,年龄:30} Js.log(p

我是一个很新的写手,并试图了解事情是如何运作的。在我的情况下,我希望从这样的变体类型访问密钥

type personType=Person({name:string,age:int})
让人({
姓名:“简”,
年龄:35岁,
}) 
Js.log(person.name)/>错误:找不到记录字段名。
以下内容正在使用记录工作:

类型personRecord={
名称:string,
年龄:int,,
}
let personAsRecord={姓名:“Bob”,年龄:30}
Js.log(personAsRecord.name)
另一种选择是使用模式匹配,它也可以工作:

let personName=切换人员{
|个人({name})=>姓名
}
Js.log(人名)
所以我的问题是:这是因为类型是一个变体,并且类型不是结构类型而不像typescript吗?访问变体的唯一方法是使用模式匹配键吗

访问变体密钥的唯一方法是使用模式匹配吗

尽管您也可以在
绑定中解构/模式匹配,但让
绑定:

让Person({name})=Person
和函数参数:

let print=(Person({name}))=>Js.log(name)
这是因为类型是一个变体,并且类型与typescript不同,不是结构类型吗

我真的不明白结构类型和它有什么关系。一个变体可以有,而且通常有多个具有不同有效载荷的“案例”,如果您不知道它们确实存在,您就无法安全地访问它们的属性。因此,您必须进行模式匹配以确定它是哪种情况,然后才能访问它的属性