前端TS项目中遇到过的难点(一)

TS项目总结

1.项目的搭建及配置

1.1使用vite来创建项目时

兼容性注意 Vite 需要 Node.js 版本 14.18+,16+。然而,有些模板需要依赖更高的 Node 版本才能正常运行,当你的包管理器发出警告时,请注意升级你的 Node 版本

启动命令以及相关内容具体看vite官网

开始 | Vite 官方中文文档

1.2浏览器自动打开

找到 package.json 配置文件!

"scripts": {
  "dev": "vite --open",
  "build": "vue-tsc && vite build",
  "preview": "vite preview"
 }

1.3 src 别名的配置

找到 vite.config.ts 配置文件。

如果红色语法提示请安装@types/node 是 TypeScript 的一个声明文件包,用于描述 Node.js 核心模块和常用的第三方库的类型信息

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path';
// https://vitejs.dev/config/
export default defineConfig({
 plugins: [vue()],
 resolve: {
  alias: {
   "@": path.resolve(__dirname, 'src')
  }
 }
})

 找到tsconfig.json配置文件,找到配置项 compilerOptions 添加配置,这一步的作用是让 IDE 可以对路径进行智能提示

"baseUrl": ".",
  "paths": {
   "@/*": ["src/*"]
  }

2.LESS 和 SCSS 的区别

相同点:
  1. LESS和SCSS都是css的预处理器,可以拥有变量,运算,继承,嵌套的功能,使用两者可以使代码更加的便于阅读和维护。

  2. 都可以通过自带的插件,转成相对应的css文件。

  3. 都可以参数混入,可以传递参数的class,就像函数一样

  4. 嵌套的规则相同,都是class嵌套class

不同点:

1.声明和使用变量</

<think>好的,用户之前问过前端开发的必备技能,现在又想知道如何有效率有步骤地学习TypeScriptTS)。首先,我需要确定用户的学习阶段。可能他已经有定的JavaScript基础,现在想进阶到TS,但可能对如何系统学习感到困惑。 接下来,我得考虑用户的需求是什么。用户提到“有效率有步骤”,说明他希望有个明确的学习路径,避免走弯路。可能他之前学习JS时遇到过困难,或者觉得TS的学习资源太多,知道从哪里下手。 用户可能是前端开发者,已经掌握了JS,现在想提升自己的技能,适应现代前端开发的需求。TS确实在很多项目中成为标配,特别是大型项目,所以用户可能有实际的工作需求,或者想增加自己的竞争力。 需要分析学习TS的常见难点。比如类型系统、泛型、配置环境等,对于新手来说可能会比较吃力。此外,用户可能担心如何将现有的JS项目迁移到TS,或者在团队中推广TS的使用。 我应该分步骤来介绍学习路径,从基础到高级,逐步深入。同时需要强调实践,比如通过项目练习和重构JS代码来巩固知识。可能还要推荐些优质资源,比如官方文档、教程,以及工具链的配置。 另外,用户可能对TS的优势和必要性太清楚,需要简要说明TS带来的好处,如类型安全、更好的代码维护性等。还要注意指出学习中的常见误区,比如开始就追求复杂的类型体操,而是先打好基础。 最后,确保回答结构清晰,步骤明确,让用户能按照计划步步学习。同时鼓励用户坚持,因为TS的学习曲线可能前期较陡,但掌握后会大大提高开发效率。</think>以下是针对 **JavaScript 开发者高效学习 TypeScript** 的步骤指南,结合从基础到进阶的实践路径,帮助系统掌握核心能力: --- ### 、**前置准备:明确学习目标** 1. **为什么要学TS?** - 类型安全:减少 `undefined is not a function` 等低级错误 - 代码可维护性:类型即文档,团队协作更高效 - 框架趋势:React/Vue3 官方推荐 + 大厂项目标配 2. **学习原则**: - **要试图次性精通**:先会用,再深入 - **保持JS思维**:TS是JS的超集,底层逻辑相通 --- ### 二、**分阶段学习路径** #### **阶段1:快速上手基础类型系统(1-2周)** 1. **类型标注基础** ```typescript // 基本类型 let name: string = "张三"; let age: number = 25; let isStudent: boolean = false; // 数组与元组 let hobbies: string[] = ["coding", "music"]; let tuple: [string, number] = ["张三", 25]; // 函数类型 type AddFunc = (a: number, b: number) => number; const add: AddFunc = (a, b) => a + b; ``` 2. **重点掌握**: - 联合类型 (`string | number`) - 类型别名 (`type`) 与接口 (`interface`) 的区别 - 类型推断(避免过度标注) #### **阶段2:深入类型工具与工程化(2-3周)** 1. **实用类型工具** ```typescript // 泛型应用 interface ApiResponse<T> { code: number; data: T; } // 条件类型 type NonNullable<T> = T extends null | undefined ? never : T; // 映射类型 type Partial<T> = { [P in keyof T]?: T[P] }; ``` 2. **工程化配置** - 理解 `tsconfig.json` 关键配置项: ```json { "compilerOptions": { "target": "ES2020", "module": "ESNext", "strict": true, "outDir": "./dist" } } ``` - 学会处理第三方库类型(`@types/xxx` 声明文件) #### **阶段3:实战进阶模式(3-4周)** 1. **设计模式与TS结合** ```typescript // 单例模式 class Logger { private static instance: Logger; private constructor() {} public static getInstance(): Logger { if (!Logger.instance) { Logger.instance = new Logger(); } return Logger.instance; } } ``` 2. **复杂类型挑战** - 类型守卫(Type Guards) - 模板字面量类型(Template Literal Types) - 声明合并(Declaration Merging) --- ### 三、**高效学习技巧** #### 1. **改造现有JS项目** - 逐步将 `.js` 文件重命名为 `.ts`,用 `any` 过渡 - 通过 `// @ts-check` 在JS文件中启用TS检查(渐进式迁移) #### 2. **刻意练习方法** - **每日题**:刷类型体操题目(推荐 [type-challenges](https://github.com/type-challenges/type-challenges)) - **代码重构**:将JS库的声明文件手写遍(如lodash的函数类型) #### 3. **调试工具链** - 使用 [TS Playground](https://www.typescriptlang.org/play) 快速验证类型 - VSCode配置: ```json "editor.codeActionsOnSave": { "source.fixAll.eslint": true, "source.organizeImports": true } ``` --- ### 四、**避坑指南** 1. **常见误区** - ❌ 过度使用 `any`(可用 `unknown` 替代) - ❌ 忽视类型声明文件(`.d.ts`)的作用 - ❌ 过早追求高级类型技巧(先夯实基础) 2. **推荐学习资源** - 官方文档:[TypeScript Handbook](https://www.typescriptlang.org/docs/handbook/) - 免费教程:[TypeScript 入门教程](https://ts.xcatliu.com/) - 实战项目:Next.js + TypeScript 全栈开发 --- ### 五、**学习效果检验** 通过以下问题自测掌握程度: 1. 如何为第三方JS库添加类型声明? 2. `interface` 和 `type` 在什么场景下必须区分使用? 3. 如何设计个支持泛型的React高阶组件类型? **关键建议**:保持写类型注释的习惯,3个月后回头看旧代码,会发现明显的进步!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值