如何使用Inquirer在TypeScript中获取用户输入并存入数组?
TypeScript + Inquirer 实现学生注册表单并存储数据到数组
1. 项目初始化与依赖安装
首先初始化项目并安装所需依赖:
npm init -y npm install typescript @types/node @types/inquirer inquirer --save-dev
接着创建tsconfig.json,配置基础的TypeScript编译选项:
{ "compilerOptions": { "target": "ES2020", "module": "CommonJS", "outDir": "./dist", "rootDir": "./src", "strict": true, "esModuleInterop": true }, "include": ["src/**/*"] }
2. 核心代码实现
在src/index.ts中编写以下代码,实现学生信息录入、数组存储的完整逻辑:
import inquirer from 'inquirer'; // 定义学生数据类型 interface Student { id: string; name: string; age: number; major: string; } // 存储学生数据的数组 let students: Student[] = []; // 学生注册函数 async function registerStudent() { const answers = await inquirer.prompt([ { type: 'input', name: 'id', message: '请输入学生学号:', validate: (input) => input.trim() !== '' || '学号不能为空' }, { type: 'input', name: 'name', message: '请输入学生姓名:', validate: (input) => input.trim() !== '' || '姓名不能为空' }, { type: 'number', name: 'age', message: '请输入学生年龄:', validate: (input) => input > 0 || '年龄必须是正数' }, { type: 'input', name: 'major', message: '请输入学生专业:', validate: (input) => input.trim() !== '' || '专业不能为空' }, { type: 'confirm', name: 'continue', message: '是否继续注册其他学生?' } ]); // 将输入的学生信息存入数组 students.push({ id: answers.id, name: answers.name, age: answers.age, major: answers.major }); // 如果用户选择继续,递归调用注册函数 if (answers.continue) { await registerStudent(); } else { // 打印所有注册的学生信息 console.log('\n=== 已注册学生信息 ==='); students.forEach((student, index) => { console.log(`学生${index + 1}:`); console.log(`学号:${student.id},姓名:${student.name},年龄:${student.age},专业:${student.major}`); }); } } // 启动注册流程 registerStudent();
3. 运行项目
执行以下命令启动程序:
npx ts-node src/index.ts
运行后按照提示输入学生信息,完成后会展示所有已注册的学生数据,所有信息都会临时存储在students数组中(程序退出后数据会丢失,符合作业不使用数据库的要求)。
内容的提问来源于stack exchange,提问作者Somama CIA
相关产品推荐
相关产品推荐

