Use the t.list type factory to take an existing type and derive a list from it.

// Creating a custom object type to be used inside a list in another type:
const Animal = t.object({
  name: 'Animal',
  fields: {
    name: t.string.nullable,
    species: t.string,

// Now, we'll use the Animal type within a list:
const Person = t.object({
  name: 'User',
  fields: {
    favoriteFoods: t.list(t.string),
    pets: t.list(Animal),
/** TypeScript */
type Person = {
  id: string | number;
  favoriteFoods: Array<string>;
  pets: Array<{
    id: string | number;
    name: string | null | undefined;
    age: Int;
    species: string;
# GraphQL:

type Person {
  id: ID!
  favoriteFoods: [String!]!
  pets: [Animal!]!
Edit on GitHub