0

我想做以下事情。但似乎我无法使用变体选项之一键入函数参数。在脚本中实现这一目标的正确方法是什么? 

这里是游乐场

  type subject = Math | History

  type person =
    | Teacher({firstName: string, subject: subject})
    | Student({firstName: string})
  
  let hasSameNameThanTeacher = (
    ~teacher: Teacher, // syntax error here
    ~student: Person,
  ) => {
    teacher.firstName == student.firstName
  }
4

1 回答 1

1

Teacher并且Student不是类型本身,而是构造类型值的构造函数person。如果您希望它们具有不同的类型,则必须明确说明:

module University = {
  type subject = Math | History

  type teacher = {firstName: string, subject: subject}
  type student = {firstName: string}
  type person =
    | Teacher(teacher)
    | Student(student)
  
  let hasSameNameThanTeacher = (
    ~teacher: teacher,
    ~student: student,
  ) => {
    teacher.firstName == student.firstName
  }
}
于 2021-04-14T09:58:21.913 回答