Skip to content

TypeScript ​

Types are the headline feature. Every endpoint, parameter, and response is typed at compile time, and validated by Zod at runtime.

Inferred types ​

You rarely need to import types — they flow from the methods:

ts
import { createTrelloClient } from 'trello.js';

const trello = createTrelloClient({ apiKey, apiToken });
const board = await trello.boards.getBoard({ id: 'abc' });
//    ^? Board — inferred, fully typed

board.name; // string
board.prefs.background; // string

Importing types explicitly ​

ts
import type { Board, Card, Member } from 'trello.js';

function summarize(board: Board, cards: Card[]): string {
  return `${board.name} — ${cards.length} cards`;
}

Importing schemas ​

Every model has a corresponding Zod schema. Use it to validate data you didn't get through the client (e.g. webhook payloads, cached responses, fixtures):

ts
import { BoardSchema, type Board } from 'trello.js';

const payload: unknown = await req.json();
const board: Board = BoardSchema.parse(payload);

parse throws ZodError on mismatch. Use safeParse if you want a result-style API:

ts
const result = BoardSchema.safeParse(payload);
if (!result.success) {
  console.error(result.error.issues);
  return;
}
const board = result.data;

Parameter types ​

Every method has a corresponding parameter type, exported from the root:

ts
import type { CreateCard } from 'trello.js';

function buildCardParams(listId: string, title: string): CreateCard {
  return { idList: listId, name: title, pos: 'top' };
}

strict mode ​

trello.js is built with strict: true and verbatimModuleSyntax: true. It will work in less strict projects, but enabling these options on your side is recommended — they catch real bugs early.