我 JS 写的好好的,为什么要用那么复杂的 TS

今年前端面试有个很有意思的现象,最经典的 JavaScript 基础类面试题,不在被面试官宠幸。原因很简单,现在市场经济收紧,公司的项目决策中往往切割掉了边角试错成本,而 TypeScript,无疑更适合构建大项目和管理。

就像 Java 和近几年火爆 Go 语言,JavaScript 虽说头顶王冠,但也并不是高枕无忧。这两年,JavaScript 与 TypeScript 可以说是齐头并进。

8699f0770ca30faaf083af2deaba7b43.png

和JavaScript做个对比,TypeScript 的优势显而易见:

  • TypeScript 的开发快速、简单,并且容易学习

  • TypeScript 支持面向对象的编程特性,比如类、接口、继承、泛型等等。

  • TypeScript 在编译时提供错误检查功能。

  • TypeScript 支持所有 JavaScript 库,因为它是 JavaScript 的超集

  • TypeScript 的工具支持为我们提供了自动完成、类型检查和源文档。

  • TypeScript 支持最新的 JavaScript 特性,包括 ECMAScript 2015。

  • TypeScript 提供了 ES6 的所有优点和更高的生产力

  • TypeScript 支持静态类型、强类型、模块、可选参数等。

b981431816ac9a06e292bfd31b1e180d.png

所以,2022 前端工程师,深入掌握 TypeScript 是必要的。但是,TypeScript 作为 JS 的超集,理解起来相对比较复杂。例如,什么是 TS 接口?它有哪些特性?如何自动编译 TS 文件并实时修改?如何将多个 TS 合并成一个 JS 文件?

上次听一个字节的朋友说起 TS,我觉得他总结的非常精炼。他认为:“TS 始于 JS,JS 与 TS(带类型的超集)并行发展,才是未来最合理的方向。”又到一年金三银四,TS 功底弱的可以了解下这个专栏内容,2天时间,让你对 TS 的理解和 JS 一样深入。

8a2be392a77531f07ddce2a8fba7babb.png

课程市场价499元

前100名仅需0.01

不到一次共享单车的钱

获得Top1%前端大神的17节实战精华

👇👇👇

88b5b5ecdd67f079fc92711ec1560c5b.png

打破困局,扫码即刻开始👆

现在报名免费加赠

前端知识体系【超全资料包】

3月7日 - 3月8日开课,主讲张云鹏是前中国联通前端技术专家跟着云鹏老师提升 TS 底层能力和项目优化的核心技术,有问题就在直播间和群里随时提问,几乎没有什么好顾虑的。

课程有多实用,看看目录你就懂了:

dc8ff2678772fe111d9fcd3dd60ff93a.png

另外,现在报名还免费赠送前端知识体系【超全资料包】,从布局框架到调试工具、思维导图、项目管理再到模块引擎一应俱全,可以说前端要用的核心都在这份资料包里了。

dc5886d05ceabc3c34c7453f14191a17.png

明星级教学教研团队

金牌教研团,平均从业年限10年以上,具备大厂实战经验,对技术深度钻研,对教学精益求精,历时半年精打细磨。

27b39a734e1c90fbc46726a5f97ac620.png

行业大咖级主讲,10年软件开发经验,前中国联通前端技术专家。

3985a9864fbbefce0c37c7511f653d13.png

备教测练评学习闭环,帮助学员循序渐进提升技术硬实力,老师全程辅导,稳步提升职场软实力。

184cea7fd966f9189f8eef5f4c19c1b9.png

“真”内推

目前,奈学教育和猎聘已达成深度合作,持续推出多行业、多领域、有深度的真项目课程,更贴合大厂企业技术要求。学完后,可直接内推到字节、阿里、 腾讯、百度等大厂,相当于为企业定向招聘,为每一位学员私人定制内推就业服务。

a1158a4353502dfd96d50e86944a3c56.png

91b3d600be10bdce26870076d1ce1e42.png

适合谁学

技术浪潮一个接一个,总会有新技术不断涌现,最怕的就是还在用老技术解决别人早就解决了的问题。如果你是一名:

e51b28ce55db7da22efc728a40386432.png

那么,这门实践精品课正是为你量身定做的!

行业名师好评如潮

教研教学更有保障

6feeadaa395f5f84eeb350c62b646101.png097d95eae1469ffb0e8f717c82a3dac6.png9638cd62c0d92353ad330ea9cf47c299.png876064f358f6947ef70d77235f507669.png

左右滑动查看更多

685b87df5010b71f976cd5ad96edeb0b.png

前端入门、进阶都必备的 TS 底层

你需要真正掌握它!

17 节干货,2天速成

市场价499 

历史新低价 0.01

错过再等一年

👇👇👇

2ca335f308ba69edfd2e3d1bb5e16bef.png

本公众号仅限前50名特惠购买

请耐心等待课程顾问通过

23ae059e6d29ee5ccacd08057d33ff14.gif

0.01 低价好课

赠送前端超全资料包

👇 点击“阅读原文”抢占优惠名额!

<think>我们正在处理用户的问题:为什么在创建Vue项目时没有生成main.ts文件而是main.js文件? 根据用户提供的引用内容,我们可以推断用户可能是在使用Vue3和Vite构建项目时遇到了类型文件的问题。但用户的核心问题是关于项目初始化时为什么没有生成main.ts而是main.js。 分析: 1. Vue项目创建时,默认的入口文件是main.js,除非我们明确选择了TypeScript作为开发语言。 2. 当使用Vue CLI或Vite创建项目时,如果我们在创建过程中选择了JavaScript而不是TypeScript,那么生成的项目就会使用main.js作为入口文件。 3. 如果用户想要使用TypeScript,需要在创建项目时选择TypeScript选项。 因此,没有生成main.ts文件的原因可能是创建项目时没有选择TypeScript。 解决方案: 1. 重新创建项目并选择TypeScript。 2. 或者,在现有项目中手动添加TypeScript支持,并将main.js改为main.ts,同时需要配置TypeScript环境(如tsconfig.json)和解决相关的模块识别问题(如引用.vue文件时的类型声明)。 参考引用内容,我们可以发现,当将main.js改为main.ts后,可能会遇到模块解析问题(如找不到./src/main.js或无法识别.vue模块)。因此,在手动更改后,还需要进行一些配置。 根据引用[2]和[3],解决.vue模块识别问题需要在项目中添加一个类型声明文件(env.d.ts)并在其中声明*.vue模块。 所以,总结回答如下: - 原因:创建项目时没有选择TypeScript作为语言。 - 解决方案:要么重新创建项目并选择TypeScript,要么手动添加TypeScript支持并配置。 同时,我们按照要求生成相关问题。</think>### 为什么创建 Vue 项目时没有生成 main.ts 文件? 在创建 Vue 项目时,系统默认生成 `main.js` 而非 `main.ts` 文件的主要原因如下: #### 1. **项目初始化配置未启用 TypeScript** - 使用 Vue CLI 或 Vite 创建项目时,**若未主动选择 TypeScript 选项**,工具链会默认生成 JavaScript 项目结构,入口文件为 `main.js`。 - 例如执行 `npm create vue@latest` 时,若在配置选项中未勾选 `TypeScript`,则不会生成 TS 相关文件[^1]。 #### 2. **手动重命名导致模块解析错误** - 若开发者自行将 `main.js` 重命名为 `main.ts`,但**未同步修改构建配置**,会导致以下问题: - 构建工具(如 Vite/Webpack)仍按原配置查找 `main.js`,引发 `Module not found: Error: Can't resolve './src/main.js'` 错误[^1]。 - TypeScript 无法识别 `.vue` 文件类型,需额外配置类型声明(如 `env.d.ts`)[^2][^3]。 --- ### 解决方案 #### ✅ **方案一:创建项目时启用 TypeScript** 在初始化阶段选择 TypeScript 支持: ```bash # 使用 Vue CLI vue create my-project # 交互式选择: 勾选 "TypeScript" # 使用 Vite npm create vue@latest # 交互式选择: 勾选 "TypeScript" 和 "JSX"(按需) ``` 此时将自动生成 `main.ts` 及配套的 `tsconfig.json`。 #### ✅ **方案二:为现有 JS 项目添加 TypeScript 支持** 1. **安装依赖**: ```bash npm install -D typescript @vitejs/plugin-vue @vue/tsconfig ``` 2. **创建 `tsconfig.json`**: ```json { "compilerOptions": { "target": "esnext", "module": "esnext", "strict": true, "moduleResolution": "node" } } ``` 3. **添加类型声明文件 `src/env.d.ts`**: ```ts declare module '*.vue' { import type { DefineComponent } from 'vue' const component: DefineComponent<{}, {}, any> export default component } ``` 4. **重命名入口文件**:将 `main.js` 改为 `main.ts` 并更新 `index.html` 中的引用路径[^2][^3]。 --- ### 根本原因总结 | 原因 | 表现 | 解决方案 | |---------------------|----------------------------------------------------------------------|----------------------------| | 未启用 TypeScript | 工具链默认生成 JS 项目 | 创建时勾选 TS 选项 | | 缺少类型声明 | TS 无法解析 `.vue` 文件,报错 `./App.vue is not a module` | 添加 `env.d.ts` 类型声明[^3] | | 构建配置未更新 | 重命名后构建工具仍查找 `main.js` | 同步修改构建配置或入口引用 | > ⚠️ 手动重命名后需确保: > ① 配置类型声明解决 `.vue` 模块识别; > ② 检查 `vite.config.js`/`vue.config.js` 是否指向新入口文件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值