Depois de uma boa noite de descanso consegui resolver o meu problema.
O Typeorm define o tipo dos campos do banco de dados com base na digitação que você fornece às variáveis para suas entidades no typescript. Typeorm converte o código abaixo para um varchar campo no meu banco de dados postgres porque eu dei uma string como um tipo em texto datilografado.
@Column({
unique: true,
nullable: true,
})
resetPasswordToken!: string;
É também aqui que reside o meu problema. O Typeorm pega a digitação de um campo e tenta criar esse campo de banco de dados com base na digitação que ele lê. Embora o código abaixo esteja correto, o typescript basicamente encapsula os dois tipos em um único objeto e esse objeto é o que está sendo lido pelo Typeorm causando o erro que recebi.
resetPasswordToken!: string | null;
Para corrigir meu problema, tive que especificar o tipo de campo do banco de dados explicitamente assim:
@Column({
type: 'text',
unique: true,
nullable: true,
})
resetPasswordToken!: string;