diff options
author | Florian Dold <florian.dold@gmail.com> | 2019-12-14 23:15:56 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2019-12-14 23:15:56 +0100 |
commit | f4043a0f8114b1b8612e01a5cdf65b8d6ffc6f00 (patch) | |
tree | aa6464ad41b15b56d4700c2a6d8f54e2157dbc40 | |
parent | a0b5aba71c6e1a9fc5fba83fea0cfb1f9fe0b9f2 (diff) |
keep checkable annotations on amount for now
-rw-r--r-- | src/util/amounts.ts | 11 | ||||
-rw-r--r-- | src/util/codec-test.ts | 2 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/util/amounts.ts b/src/util/amounts.ts index 3056ebc65..26cee7f8f 100644 --- a/src/util/amounts.ts +++ b/src/util/amounts.ts @@ -45,27 +45,34 @@ export const maxAmountValue = 2 ** 52; * Non-negative financial amount. Fractional values are expressed as multiples * of 1e-8. */ -export interface AmountJson { +@Checkable.Class() +export class AmountJson { /** * Value, must be an integer. */ + @Checkable.Number() readonly value: number; /** * Fraction, must be an integer. Represent 1/1e8 of a unit. */ + @Checkable.Number() readonly fraction: number; /** * Currency of the amount. */ + @Checkable.String() readonly currency: string; + + static checked: (obj: any) => AmountJson; } const amountJsonCodec: Codec<AmountJson> = objectCodec<AmountJson>() .property("value", numberCodec) + .property("fraction", numberCodec) .property("currency", stringCodec) - .build<AmountJson>("AmountJson"); + .build("AmountJson"); /** * Result of a possibly overflowing operation. diff --git a/src/util/codec-test.ts b/src/util/codec-test.ts index 640cd7c1c..22f6a0a98 100644 --- a/src/util/codec-test.ts +++ b/src/util/codec-test.ts @@ -46,7 +46,7 @@ type MyUnion = AltOne | AltTwo; test("basic codec", t => { const myObjCodec = objectCodec<MyObj>() .property("foo", stringCodec) - .build<MyObj>("MyObj"); + .build("MyObj"); const res = myObjCodec.decode({ foo: "hello" }); t.assert(res.foo === "hello"); |