TypeScript: Infer `prompt()` return type object shape from question objects
Author: karlhorkyCreated Jun 24, 2024Updated Aug 7, 2025
Hi, first of all, thanks for enquirer Nice library!
Currently, enquirer has a return type of Promise<object>:
import { prompt } from 'enquirer';
const questions = [
{
type: 'input',
name: 'name',
message: 'What is your name?',
},
{
type: 'input',
name: 'username',
message: 'What is your username?',
},
];
const result = await prompt(questions);
// ^? const result: objectIt would be great if prompt() would infer the types from the questions object:
import { prompt } from 'enquirer';
const questions = [
{
type: 'input',
name: 'name',
message: 'What is your name?',
},
{
type: 'input',
name: 'username',
message: 'What is your username?',
},
];
const result = await prompt(questions);
// ^? const result: { name: string; username: string; }Alternatives considered
Pass in generics, this works today, but requires careful synchronization of the type and the questions - easy to make mistakes:
import { prompt } from 'enquirer';
type Result = {
name: string;
username: string;
};
const questions = [
{
type: 'input',
name: 'name',
message: 'What is your name?',
},
{
type: 'input',
name: 'username',
message: 'What is your username?',
},
];
const result = await prompt<Result>(questions);
// ^? const result: { name: string; username: string; }Source: enquirer/enquirer