如何使用变体选项在 rescript 中键入函数参数?
How to use a variant option to type function parameters in rescript?
我想做以下事情。但似乎我无法使用变体选项之一键入函数参数。在 rescript 中实现这一目标的正确方法是什么?
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
}
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
}
}
我想做以下事情。但似乎我无法使用变体选项之一键入函数参数。在 rescript 中实现这一目标的正确方法是什么?
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
}
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
}
}