I think it depends on how the cards are going to be used. If the second pattern is followed then every interaction with a card will first have to handle the card type. If you need the cost before the type something like the first pattern should work.
This is a good explanation of the two types.
Both types are very useful on there own, but things get interesting when you combine them. Also, there are choices for how to combine them.
For example, in a card game of sorts is there a record type
Card
that has a discriminated unionCardType
or does the union contain the records?See the following:
or
I think it depends on how the cards are going to be used. If the second pattern is followed then every interaction with a card will first have to handle the card type. If you need the cost before the type something like the first pattern should work.
Excellent example. You are right, it depends how you are going to use your cards.
There is no silver bullet but it's always good to know that there are options available.
Thank you for sharing your thoughts on this.