Как отмечено в комментарии, кажется, что вы пытаетесь использовать объектно-ориентированные шаблоны без объектов, что вряд ли является хорошей идеей.
Если вы решите использовать типы F #, вы сделаете это следующим образомэто:
type Employee = {
name: string
age: int
salary: int option
}
let person1 = {
name = "Mike",
age = 42,
salary = Some 4200
}
let person2 = {
name = "Sue",
age = 37,
salary = None
}
Если вы пропустите имя или возраст, вы получите ошибку времени компиляции, как если бы вы использовали person1 или person2, не проверяя, существует ли заработная плата. личные данные, сделайте что-то вроде этого:
type Employee = private {
name: string
age: int
salary: int option
}
let name employee = employee.name
let employee name age = { name = name; age = age; salary = None }
let withSalary salary employee = { employee with salary = Some salary }
let mike = employee "Mike" 42 |> withSalary 4200
mike.name //return name of this employee