Как использовать вариантный вариант для ввода параметров функции в рескрипт?

Я бы хотел сделать следующее. Но, похоже, я не могу ввести параметр функции с одним из вариантов. Каким был бы правильный способ добиться этого в рескрипте? 

Вот детская площадка

        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
  }

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
  }
}
Другие вопросы по тегам