From 9fea72e701813662a4af3733cb14ab713ebfdbef Mon Sep 17 00:00:00 2001 From: Eoin Murphy <95632764+eoin-betdex@users.noreply.github.com> Date: Fri, 4 Feb 2022 18:11:17 +0000 Subject: [PATCH] ts: fill in some gaps for ts IDL types (#1393) --- CHANGELOG.md | 1 + ts/src/program/namespace/types.ts | 3 +++ 2 files changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2477edccf..1737e4a90 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ incremented for features. ### Fixes * ts: Fix the root type declaration of the `Wallet` / `NodeWallet` class. ([#1363](https://github.com/project-serum/anchor/pull/1363)) +* ts: Improve type mapping of Account fields into Typescript with additional support for `Option` and `Vec` types. ([#1393](https://github.com/project-serum/anchor/pull/1393)) ### Features diff --git a/ts/src/program/namespace/types.ts b/ts/src/program/namespace/types.ts index 0da0d9403..5c80411ab 100644 --- a/ts/src/program/namespace/types.ts +++ b/ts/src/program/namespace/types.ts @@ -92,6 +92,7 @@ export type MethodsFn< type TypeMap = { publicKey: PublicKey; bool: boolean; + string: string; } & { [K in "u8" | "i8" | "u16" | "i16" | "u32" | "i32"]: number; } & @@ -105,6 +106,8 @@ export type DecodeType = T extends keyof TypeMap ? Defined[T["defined"]] : T extends { option: { defined: keyof Defined } } ? Defined[T["option"]["defined"]] | null + : T extends { option: keyof TypeMap } + ? TypeMap[T["option"]] : T extends { vec: keyof TypeMap } ? TypeMap[T["vec"]][] : T extends { array: [defined: keyof TypeMap, size: number] }