我有两种记录类型:
type Employee = {
Id: string
Name: string
Phone: string
}
type AuditLog = {
PerformedBy: string
PerformedOn: string
}
Run Code Online (Sandbox Code Playgroud)
以下是记录类型的实例:
let emp = {
Id = "123"
Name = "Abc"
Phone = "999"
}
let log = {
PerformedBy = "234"
PerformedOn = "1/1/1"
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以组合这两个实例的字段来创建新的记录/匿名记录类型,如下所示?
let combined = {
Id = "123"
Name = "Abc"
Phone = "999"
PerformedBy = "234"
PerformedOn = "1/1/1"
}
Run Code Online (Sandbox Code Playgroud)
在 F# 中,记录类型不能以其他方式继承或组合。要获得具有组合字段的类型,您唯一能做的就是
显式创建与现有 2 种类型无关的新记录
匿名创建此类类型,@JL0PD 指向匿名类型的文档。在某些情况下,匿名类型可能非常有用,但在大多数情况下,显式类型是更好的选择 - 使代码更具可读性。
创建一个包含 2 个字段和 2 种类型的记录,这并不是您真正想要的。
某些语言(例如 Typescript)具有交集类型,您可以将类型定义为具有一组其他类型的字段(因为创建类型的字段是组合类型的并集,“交集”对我来说听起来很奇怪)。我猜您正在寻找该功能,但 F# 和大多数语言中都没有该功能。