taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit f4043a0f8114b1b8612e01a5cdf65b8d6ffc6f00
parent a0b5aba71c6e1a9fc5fba83fea0cfb1f9fe0b9f2
Author: Florian Dold <florian.dold@gmail.com>
Date:   Sat, 14 Dec 2019 23:15:56 +0100

keep checkable annotations on amount for now

Diffstat:
Msrc/util/amounts.ts | 11+++++++++--
Msrc/util/codec-test.ts | 2+-
2 files changed, 10 insertions(+), 3 deletions(-)

diff --git 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 @@ -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");