我对重新编写并试图了解事情是如何运作的很陌生。在我的情况下,我想从这样的变体类型访问密钥。
type personType = Person({name: string, age: int})
let person = Person({
name: "Jane",
age: 35,
})
Js.log(person.name) // -> Error: The record field name can't be found.
以下使用记录正在工作:
type personRecord = {
name: string,
age: int,
}
let personAsRecord = {name: "Bob", age: 30}
Js.log(personAsRecord.name)
另一种选择是使用模式匹配,它也可以:
let personName = switch person {
| Person({name}) => name
}
Js.log(personName)
所以我的问题是:这是因为类型是变体,而打字不像打字稿那样是结构类型吗?访问变体键以使用模式匹配的唯一方法是什么?