Как использовать вариантный вариант для ввода параметров функции в рескрипт?
Я бы хотел сделать следующее. Но, похоже, я не могу ввести параметр функции с одним из вариантов. Каким был бы правильный способ добиться этого в рескрипте?
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
}
}