在 F# 中,您可以执行以下操作:
type DeliveredOrderData =
{
OrderId: int;
DateDelivered: DateTime;
}
type UndeliveredOrderData =
{
OrderId: int;
}
type Order =
| Delivered of DeliveredOrderData
| Undelivered of UndeliveredOrderData
Run Code Online (Sandbox Code Playgroud)
然后我可以创建根据状态返回的函数:
let putOnTruck order =
match order with
| Undelivered {OrderId=id} ->
OutForDelivery {OrderId=id}
| Delivered _ ->
failwith "package already delivered"
Run Code Online (Sandbox Code Playgroud)
我了解了如何在 TypeScript 中创建类型,但是我该如何做与上面相同的事情呢?
const putOrderOnTruck = (order: UndeliveredOrder) => {
// how can I make sure order is really UndeliveredOrder?
}
Run Code Online (Sandbox Code Playgroud)