分享一道不错的TS面试题(含3层),看看能答到第几层!
更新时间:2024-01-05问题背景
在这道面试题中,我们需要设计和实现一个包含三个层次的 TypeScript 项目。这个问题旨在考察你在全栈开发方面的技能和知识。我们将使用 TypeScript 编程语言,并在每个层次上实现相应的功能,并解释代码的用途和规范。
第一层 - 前端层
在这一层中,我们将集中精力处理前端开发。我们将使用 React 框架来构建用户界面,并通过 TypeScript 来编写组件。我们可以从创建一个基本的项目开始:
import React from 'react'; export interface User { id: string; name: string; age: number; } const App: React.FC = () => { const user: User = { id: "1", name: "John Doe", age: 30 }; return (); }; export default App;{user.name}
Age: {user.age}
在上面的代码中,我们定义了一个名为 User
的接口,该接口描述了用户对象的属性。然后,我们在组件中创建了一个名为 user
的对象,并在页面上显示用户的名称和年龄。
第二层 - 后端层
在这一层中,我们将关注于后端开发。我们将使用 Express 框架和 MongoDB 数据库来创建一个简单的 REST API,并在 TypeScript 中实现它。我们可以创建一个名为 server.ts
的文件,并编写以下代码:
import express, { Request, Response } from 'express'; import mongoose from 'mongoose'; const app = express(); const PORT = process.env.PORT || 3000; mongoose.connect('mongodb://localhost:27017/myapp', { useNewUrlParser: true }); app.get('/api/users', async (req: Request, res: Response) => { const users = await User.find(); res.json(users); }); app.listen(PORT, () => { console.log(`Server is running on port ${PORT}`); });
在上述代码中,我们首先导入了必要的库和模块。然后,我们创建了一个 Express 应用程序和一个名为 users
的路由,通过访问 /api/users
路径,我们可以获取所有的用户对象,并将它们作为 JSON 数据返回给客户端。
第三层 - 数据库层
在这一层中,我们将处理与数据库的交互。我们将使用 Mongoose 库来编写模型和数据库操作。我们可以创建一个名为 user.model.ts
的文件,并编写以下代码:
import mongoose from 'mongoose'; export interface User { id: string; name: string; age: number; } const userSchema = new mongoose.Schema({ name: { type: String, required: true }, age: { type: Number, required: true }, }); const User = mongoose.model ('User', userSchema); export default User;
在上面的代码中,我们首先导入了必要的库和模块。然后,我们定义了一个名为 User
的接口,与前端层的接口保持一致。接下来,我们创建了一个名为 userSchema
的 Mongoose 模式,并编译为名为 User
的模型。这样,我们就可以使用 Mongoose 提供的方法来处理用户对象的 CRUD 操作。
总结
通过这个面试题,我们实际上搭建了一个包含三个层次的 TypeScript 项目。我们从前端层开始,使用 React 和 TypeScript 构建了用户界面。然后,我们转向后端层,在 Express 和 TypeScript 的帮助下创建了一个简单的 REST API。最后,我们在数据库层使用了 Mongoose 进行模型定义和数据库操作。这道题目考察了你在全栈开发中的多方面技能和知识,包括前端框架、后端开发、数据库操作以及 TypeScript 的使用。