diff options
| author | Arnaud Bailly <arnaud@pankzsoft.com> | 2025-11-29 09:07:09 +0100 |
|---|---|---|
| committer | Arnaud Bailly <arnaud@pankzsoft.com> | 2025-11-29 09:07:09 +0100 |
| commit | a8c27de3f4434d8a08e953b95b47a4161f9473ed (patch) | |
| tree | 426e6840756dc40881a6bb7384e7f7107e3a2d88 /pbt/ts/src/bank.ts | |
| parent | 97e0dfa41a50d9b7af7d1769e2e712625efb3175 (diff) | |
| download | lambda-nantes-a8c27de3f4434d8a08e953b95b47a4161f9473ed.tar.gz | |
start simple bank example
Diffstat (limited to 'pbt/ts/src/bank.ts')
| -rw-r--r-- | pbt/ts/src/bank.ts | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/pbt/ts/src/bank.ts b/pbt/ts/src/bank.ts new file mode 100644 index 0000000..bee9dfc --- /dev/null +++ b/pbt/ts/src/bank.ts @@ -0,0 +1,31 @@ +import {Option, fromNullable} from 'fp-ts/lib/Option'; + +// keep it simple +export type Account = string; + +export interface Bank { + balance: (account: Account) => Option<number>; + deposit: (account: Account, amt: number) => void; + withdraw: (account: Account, amt: number) => void; +} + +export class SimpleBank implements Bank { + private accounts: Map<Account, number>; + + constructor(accounts: Map<Account, number>) { + // clone the content of the map + this.accounts = new Map(accounts); + } + + balance(account: Account): Option<number> { + return fromNullable(this.accounts.get(account)); + } + + deposit(account: Account, amt: number): void { + throw new Error('Method not implemented.'); + } + + withdraw(account: Account, amt: number): void { + throw new Error('Method not implemented.'); + } +} |
