You're building a banking app where a `Transaction` must always have a non-zero `amount`. Which Swift feature best enforces this at the type level?
-
A
A guard statement at call sites
-
B
A failable initializer that returns nil for zero amounts
-
C
An optional property with a didSet observer
-
D
A global validation function called before use