01-开篇:用正确的方式学习 TypeScript
课程
1
开篇:用正确的方式学习 TypeScript
已学完
学习时长: 7分24秒
2
工欲善其事:打造最舒适的 TypeScript 开发环境
学习时长: 19分14秒
3
进入类型的世界:理解原始类型与对象类型
学习时长: 37分40秒
4
掌握字面量类型与枚举,让你的类型再精确一些
学习时长: 24分53秒
5
函数与 Class 中的类型:详解函数重载与面向对象
学习时长: 50分40秒
6
探秘内置类型:any、unknown、never 与类型断言
学习时长: 34分58秒
7
类型编程好帮手:TypeScript 类型工具(上)
学习时长: 33分34秒
8
类型编程好帮手:TypeScript 类型工具(下)
学习时长: 40分52秒
9
类型编程基石:TypeScript 中无处不在的泛型
学习时长: 43分46秒
10
结构化类型系统:类型兼容性判断的幕后
学习时长: 20分48秒
11
类型系统层级:从 Top Type 到 Bottom Type
学习时长: 45分16秒
12
类型里的逻辑运算:条件类型与 infer
学习时长: 52分44秒
13
内置工具类型基础:别再妖魔化工具类型了!
学习时长: 44分47秒
14
反方向类型推导:用好上下文相关类型
学习时长: 18分37秒
15
函数类型:协变与逆变的比较
学习时长: 21分38秒
16
了解类型编程与类型体操的意义,找到平衡点
学习时长: 4分27秒
17
内置工具类型进阶:类型编程进阶
学习时长: 83分3秒
18
基础类型新成员:模板字符串类型入门
学习时长: 32分58秒
19
类型编程新范式:模板字符串工具类型进阶
学习时长: 69分27秒
20
工程层面的类型能力:类型声明、类型指令与命名空间
学习时长: 53分23秒
21
在 React 中愉快地使用 TypeScript:内置类型与泛型坑位
学习时长: 78分9秒
22
让 ESLint 来约束你的 TypeScript 代码:配置与规则集介绍
学习时长: 57分13秒
23
全链路 TypeScript 工具库,找到适合你的工具
学习时长: 25分13秒
24
说说 TypeScript 和 ECMAScript 之间那些事儿
学习时长: 29分14秒
25
装饰器与反射元数据:了解装饰器基本原理与应用
学习时长: 81分53秒
26
控制反转与依赖注入:基于装饰器的依赖注入实现
学习时长: 69分6秒
27
TSConfig 全解(上):构建相关配置
学习时长: 55分33秒
28
TSConfig 全解(下):检查相关、工程相关配置
学习时长: 76分19秒
29
基于 Prisma + NestJs 的 Node API :前置知识储备
学习时长: 44分50秒
30
基于 Prisma + NestJs 的 Node API :项目开发与基于 Heroku 部署
学习时长: 46分40秒
31
玩转 TypeScript AST:AST Checker 与 CodeMod
学习时长: 85分18秒
32
感谢相伴:是结束,也是开始
学习时长: 3分21秒
33
漫谈篇:面试中的 TypeScript
学习时长: 4分25秒
juejin_logo copyCreated with Sketch.

最近,软件开发设计公司 The Software House 针对 2022 年前端市场状态的调查显示,84% 的受访者都在使用 TypeScript,43% 的受访者甚至认为 TypeScript 将超越 JavaScript 成为前端开发的主要语言。

无论 TypeScript 是否会超越 JavaScript,可以肯定的是,TypeScript 已被开发人员普遍接受,和 ES6 语法以及前端框架一起,被视为前端开发领域的基础工具。但是,关于 TypeScript 的质疑却一直没有减少,比如:

  • TypeScript 限制了 JavaScript 的灵活性;
  • TypeScript 并不能提高应用程序的性能;
  • TypeScript 开发需要更多额外的类型代码。

这些质疑其实可以归纳为一点:TypeScript 会影响实际项目的开发效率。事实真的是这样吗?

为什么说 TypeScript 可能超越 JavaScript?

我们知道,JavaScript 一直以灵活性著称。在实际开发时,我们不需要确定一个变量的类型,就能直接访问可能并不存在的属性,所以无需为每一步操作都定义类型。在小型项目中,这种灵活性可以有效提高开发效率,帮助我们掌控全局。

但随着项目规模的增大,这些变量类型的数量也会成倍增加,你总有记错、遗漏的时候。此时,灵活性就变成了埋在项目内的定时炸弹。在《Top 10 JavaScript errors from 1000+ projects》 中,最常见的错误就是 Cannot read property 'xxx' of undefined、undefined is not a function 等。这些错误就是我们过度依赖灵活性的后果,一旦它们被触发,就会导致你的页面白屏、卡死,甚至崩溃。

要解决灵活性带来的隐患,我们需要的是类型。更准确地说,是项目开发时的类型检查能力。 TypeScript 通过易上手且功能强大的类型系统,为 JavaScript 提供了强大的类型检查能力。在类型的帮助下,我们无需实际运行代码,就能通过类型的流转观察到变量的值是如何改变的。同时,类型的标记也能帮助我们确保每一处访问、赋值与操作的类型是符合预期的,有效减少我们需要承受的心智负担。

由于类型的引入,TypeScript 的确限制了 JavaScript 的灵活性,但也增强了项目代码的健壮性,并且对于其他同属于灵活性的代表特性,如 this、原型链、闭包以及函数等,TypeScript 丝毫没有限制。

但是,想要获得类型的帮助,我们需要额外的类型代码。这会影响开发效率吗?会有影响,但更多是正向的。

首先,要实现类型的精确标注,我们并不一定需要大量的类型代码。就像你给变量 A 新增一些属性得到变量 B,你会完全重新声明这两个变量的值吗?不会。在类型层面也是一样,变量 B 的类型会基于变量 A 的类型派生得到,它们并不是两个完全独立的类型。基于这一方式,我们就能让类型之间存在紧密的关联,减少冗余的类型代码。

其次,当项目规模增大到某一阈值后,这些类型代码会是你开发时最得力的助手,让你有底气大胆地进行各种逻辑操作,不需要先把这些值都打印出来确认一遍。同时,由于 TypeScript 强大的类型推导能力,随着你对变量进行各种操作,TypeScript 就会自动地推导出变量最终的类型。你只需要确保类型符合,最终的结果就是符合你预期的。而在你敲击下 . 来访问一个变量的属性时,TypeScript 也会将所有的属性展示出来供你挑选。这就是类型代码对开发效率的提升所在。

而在最终编译时,TypeScript 又会将这些类型代码抹除,还给你可以直接放进浏览器里跑的、纯粹的 JavaScript 代码。因此,TypeScript 确实不能提高应用程序的性能,因为最终运行的仍然是 JavaScript。

总的来说,TypeScript 对开发效率的影响和项目的规模息息相关。在小项目中,TypeScript 确实不可避免地降低了项目的开发效率。但如果我们放眼于项目的整个生命周期,得益于严密的类型检查与如臂使指的类型推导,TypeScript 不仅避免了 JavaScript 灵活性可能会带来的隐患,还能让你在面对 Bug 时更快地定位问题,让程序跑得更稳定一些!从这个方面来说,TypeScript 对开发效率的提升是终身制的。

如何系统学习 TypeScript?

随着越来越多的前端开发者开始尝试学习和使用 TypeScript,理论上 TypeScript 应该已经完全取代 JavaScript 了,但实际上并没有。一方面,就像我们前面所说,项目规模较小或部分开发者仍然更偏爱灵活的 JavaScript 。另一方面,作为 JavaScript 中不存在的概念,类型能力相关的学习成本让很多开发者停留在入门阶段,无法前进。

许多时候,高昂的学习成本往往来自于我们对 TypeScript 不正确的认知,以及错误的学习路径。比如说,有人认为“把类型相关的概念学习完就算掌握 TypeScript 了”,有人过了一遍文档和社区文章,简单地上手使用一下,就觉得自己的 TypeScript 水平已经相当不错了。

首先,通过社区资源自学并没有什么问题,但好内容太少,找起来也需要很多时间。其次,任何知识点都不能孤立地学习。不然在实际开发时,遇到一个复杂点的类型编程场景,我们就束手无策了。

那么,我们到底该怎么学习 TypeScript 呢?学习没有捷径,最好的学习方法就是先建立起对事物的全面认知,然后由浅入深地系统学习。 这里的“全面”如何理解?我们首先要了解 TypeScript 是由哪些部分组成的。相对严谨来说,TypeScript 由三个部分组成:类型、语法与工程。我们可以从这三个部分入手,来建立起一个全面、系统的学习路径。

首先是类型能力。它是最核心的部分,也是学习成本最高的部分。它为 JavaScript 中的变量、函数等概念提供了类型的标注,同时内置了一批类型工具,基于这些类型工具我们就能实现更复杂的类型描述,将类型关联起来。你可以从最简单的类型开始,每学到一个新的类型能力就添加上去,思考它和已掌握部分的交相融合,以此一步步掌握整个类型系统。

接着是语法部分。TypeScript 提前支持了一些已经到达 Stage 3 / 4 阶段,或是比较重要的 TC39 提案,比如使用最多的可选链(?.)、空值合并(??)、装饰器等,这些语法都已经或即将成为 ECMAScript Next 的新成员。在 TypeScript 中使用这些新语法时,你只需要简单的配置就能实现语法的降级,让编译后的代码可以运行在更低的浏览器或 Node 版本下。这一部分几乎没有学习成本,他们就像语言的 API,你只需要多提醒自己去使用,及时查询官方文档就能熟悉了。

类型能力与新语法确实很棒,但浏览器不认怎么办?TypeScript 会在构建时被抹除类型代码与语法的降级。这一能力就是通过 TypeScript Compiler(tsc)实现的。tsc 以及 tsc 配置(TSConfig)是 TypeScript 工程层面的重要部分。除此以外,TypeScript 工程能力的另一重要体现就是,我们可以通过类型声明的方式,在 TypeScript 中愉快地使用 JavaScript 社区的大量 npm 包。

类型、语法、工程其实也代表了三个不同阶段使用 TypeScript 目的:为 JavaScript 代码添加类型与类型检查来确保健壮性,提前使用新语法或新特性来简化代码,以及最终获得可用的 JavaScript 代码。因此,类型-语法-工程,也是学习 TypeScript 的最佳路径。

这门课程是如何设计的?

按照我们上面讲到的学习路径,这门课程也将分为类型能力篇、语法篇和工程实践篇。从下图中也能看出,我们会将重点更多地放在类型部分。

我们会从 TypeScript 的类型基础开始学习,然后到泛型、条件类型等这些首次见面的类型工具。在这些类型工具的学习与使用中,我们会遇到许多困惑。这时不妨转换下方向,来了解 TypeScript 的类型系统,包括它是如何进行类型比较的,以及整个类型世界的运行规则是怎样的。这一步将帮助你从根源上理解 TypeScript 的类型能力设计与底层运行规则。

掌握了类型工具与类型系统后,我们才会学习类型能力最复杂的概念:类型编程。这部分我们会从内置工具类型讲解到内置工具类型进阶,带你循序渐进地掌握类型编程中的 4 大范式。

通过这一路线,你将建立起全面的 TypeScript 类型能力知识体系,懂得如何结合使用各种类型工具来进行类型编程,如何独立解决各种类型报错,以及最重要的能力——理解类型世界的基本规则与运行规律。

迈过了类型这座大山以后,我们将面对新朋友:语法,它们比类型部分轻松友好多了。我们会从 TypeScript 与 ECMAScript 的关系开始说起,介绍这些新语法的使用,对其中的重量级角色装饰器,我们更会搭配实战。

在最后的工程部分,除了我们已经提到的 tsc 以及 TSConfig ,我们还会有更多的工程场景实战,类型声明与类型指令,与 React / ESLint 等框架或工具的紧密结合,开发并部署一个基于 TypeScript 的 Node API 。就像这本小册的名字《 TypeScript 全面进阶指南 》一样,我们的目标是全方位、无死角地掌握 TypeScript 。

写在最后

无论你处于哪个阶段,只要想开始学习 TypeScript,这门课程就是适合你的。只要你沿着课程中给出的路线,完成这一路上的各种任务,就一定能从新手成功迈向高级玩家。

同时我也希望,你可以把它当作一本备忘手册,时常回顾和翻阅。比如说,当你忘记了 never 类型的具体意义,当你忘记了 tsconfig 的某一个配置具体作用,当你忘记了某一类工具类型的实现原理,你都可以回来在小册中找到答案。

最后,也欢迎你在交流群或 GitHub 仓库的 issue 区,与我交流 TypeScript 学习路上的问题。除了与其他读者互相交流解惑以外,我也会安排固定的答疑时间来统一解决问题,期待与你一同进步。

课程中的代码

小册中的所有代码都会存放在 TypeScript-Tiny-Book 这个仓库里,基于 Monorepo 架构来隔离了各个不同部分的示例代码,同时在每一节也会给出对应代码的地址。

留言
Ctrl + Enter
全部评论(118)
后天同学的头像
删除
前端摸鱼师
打卡 冲冲冲
点赞
回复
用户9686946201762的头像
删除
gogogogo
点赞
回复
yellowsea的头像
删除
01 go go go
点赞
回复
打破一层天的头像
删除
前端攻城狮 @ 保密
打卡,开始学习
点赞
回复
用户6680405474905的头像
删除
打卡
点赞
回复
举个栗子儿的头像
删除
前端开发工程师 @ 某小型互联网公司
打卡[庆祝]
点赞
回复
无尽の序幕的头像
删除
打卡
点赞
回复
朱俊宇的头像
删除
前端开发
项目启动404
image
点赞
1
删除
(作者)
没有提供本地启动功能哈,这个只是模板里带的
点赞
回复
山水_之间的头像
删除
前端
打卡,ts我来了
点赞
回复
啊逼不懂code的头像
删除
打卡学习
点赞
回复
Zicxxciz的头像
删除
前端工程师 @ ****
启动打卡
点赞
回复
momomao的头像
删除
前端研发
打卡
点赞
回复
多吃牛肉减肥的头像
删除
二刷
点赞
回复
大花花的头像
删除
API测试工程师
赞[赞]
点赞
回复
影风莫的头像
删除
前端工程师
二刷
点赞
回复
大家好我叫卢同学的头像
删除
学生仔 @ GUET
打卡,Day1
点赞
回复
机智的狮老师的头像
删除
可视化工程师
打卡
点赞
回复
用户2362677620139的头像
删除
打卡
点赞
回复
多吃牛肉减肥的头像
删除
打卡[大笑]
点赞
回复
孤浪的剑客的头像
删除
前端开发工程师
之前也学习了一些ts基础的东西,最主要的还是实战吧,结合实际业务场景使用循序渐进,是一个比较完美的学习方法!打卡希望能有所收获吧
点赞
回复
Nemo君29102的头像
删除
打卡 之前看了文档但是没用起来。忘的差不多了 1024 好价格 果断入手
点赞
回复
黄渡理工校长的头像
删除
买晚了,错过了1024的半价.....
云谷园区打卡[看]
点赞
回复
用户2137119879765的头像
删除
ts是一门语言?
点赞
2
删除
(作者)
。。。?
点赞
回复
删除
难道不是?
点赞
回复
风就是我的头像
删除
ts只能说在js上打了个类型检查的补丁,不能说ts取代js
点赞
1
删除
(作者)
从使用的角度看,就是取代呀,浏览器里跑的当然还是js
1
回复
小小的包子的头像
删除
前端开发
2022年10月31日10:52:45
点赞
回复
Kabuto甲斗的头像
删除
打卡
点赞
1
删除
(作者)
我直接爆甲
点赞
回复
zui的头像
删除
打卡
点赞
回复
寿司八哥的头像
删除
Web3D @ 图形起源
打卡
1
回复
coderlelouch的头像
删除
前端
优惠券~大佬
点赞
回复
涛涛_江的头像
删除
打卡
点赞
回复
前端家里蹲的头像
删除
前端开发工程师 @ 家里蹲
打卡,开始学习
点赞
回复
用户5296370708132的头像
删除
能否出个视频
2
回复
dev的头像
删除
前端民工\摇滚爱好者\HM\极简主义 @ AI
都标上余杭区了,这个赞不给不行
2
1
删除
都标上余杭区了,这个赞不给不行
1
回复
SDDDD的头像
删除
有优惠劵吗
点赞
1
删除
(作者)
9j5f7FEX
点赞
回复
弦梧的头像
删除
新手前端 @ 小公司
求优惠券
点赞
1
删除
(作者)
9j5f7FEX
点赞
回复
小弋的头像
删除
前端开发 @ 阿里巴巴
求优惠券
点赞
1
删除
(作者)
9j5f7FEX
点赞
回复
掘金第一ez的头像
删除
前端 @ 不知名公司
还有优惠券吗
1
1
删除
(作者)
9j5f7FEX
1
回复
前端取经中的头像
删除
web前端 @ 未知
还有优惠券优惠券吗😂
2
回复
CoderBin的头像
删除
🏆 CoderBin前端空间栈
打卡[奋斗]
点赞
回复
慕风乐雨的头像
删除
前端小白
表示真不知道有优惠券啊
点赞
回复
阿栓的头像
删除
前端
我也刚买。。。没看到优惠券
点赞
回复
专写BUG的头像
删除
web前端开发 @ 成都某知名互联网公司
啊 我去 我刚买 看到评论区有优惠券[捂脸]
点赞
回复
贝克汉堡的头像
删除
嘟嘟嘟
优惠券优惠券
点赞
回复
大橙子TnT的头像
删除
前端 @ 黑煤窑
优惠券优惠券
点赞
1
删除
(作者)
8b45sMJa
点赞
回复
衔泥的头像
删除
软件工程师
赞
点赞
回复
robot9999的头像
删除
前端开发
重拾TS
点赞
回复
掘金黄金双枪的头像
删除
开始 TS 之旅 呜呜呜
点赞
回复
Mr.Pan酱的头像
删除
开始 TS 之旅
image
点赞
回复
guaishou的头像
删除
打
点赞
回复
用户4417285901777的头像
删除
还有优惠嘛
点赞
2
删除
(作者)
8b45sMJa
点赞
回复
删除
谢啦
“
8b45sMJa
”
点赞
回复
Big_Rice的头像
删除
前端工程师 @ 未知
打卡[赞]
1
回复
cnjianghu的头像
删除
技术 @ 家里蹲
有没有大佬有优惠券的
点赞
回复
伯nulee的头像
删除
小瘪三 @ 原来你也是小瘪三
打卡
点赞
回复
影风莫的头像
删除
前端工程师
打卡
点赞
回复
啃土师的头像
删除
WEB开发 @ 填砖头的地方
哪位大佬有折扣券,太穷了,但是抵挡不住知识的吸引想学
2
6
删除
(作者)
3dCjtSk9,7折
2
回复
删除
感谢作者大大
“
3dCjtSk9,7折
”
点赞
回复
删除
没看到这条消息,血亏,早点原价买的
“
3dCjtSk9,7折
”
点赞
回复
删除
还得是你呀老哥
点赞
回复
删除
买完才发现此处有优惠码
“
3dCjtSk9,7折
”
点赞
回复
删除
大佬,有没有折扣券呀
“
3dCjtSk9,7折
”
点赞
回复
遇你相识的头像
删除
前端开发工程师 @ 上海哔哩哔哩科技有限公司
怎么加群?扫码回复了不理我
点赞
1
删除
现在加上了嘛?
点赞
回复
涛少的头像
删除
前端工程师
呀呀,错过优惠[流泪]
点赞
回复
pocces1312312的头像
删除
1231231 @ 21312
不错不错
点赞
回复
木子烁束岸的头像
删除
阅
点赞
回复
将温柔藏入风的头像
删除
test
image
点赞
回复
蜀涛飘雪的头像
删除
前端工程师 @ 无名
这门课程是如何设计的? 这一节里面的图片没有附上,希望补上
点赞
回复
我的女孩来接我了吗的头像
删除
前端工程师
“类型工具与类型编程后,我们才会学习类型能力最复杂的概念:类型编程”原文中的类型编程是否有误
点赞
1
删除
(作者)
已更新→类型系统
点赞
回复
释放天性的头像
删除
打卡
点赞
回复
丶满天星灬的头像
删除
ts后期能不能结合vue,还有eslint进行讲解呢,经常出现使用vscode写代码的时候出现类型报错
点赞
5
删除
(作者)
后面会有一节结合 ESLint 的,但 Vue 的暂时不会有,因为我不会 Vue ...
1
回复
删除
react呢、?
“
后面会有一节结合 ESLint 的,但 Vue 的暂时不会有,因为我不会 Vue ...
”
点赞
回复
删除
后面会更新出来~
“
react呢、?
”
点赞
回复
删除
想小小调研一下,你们更想看 React 哪些方面的?仅仅是 React,不涉及其他路由或者状态管理
“
react呢、?
”
点赞
回复
删除
其实对于大多数人来说,缺乏使用React架构项目的能力,React哪些基础API看看文档都能学会了,但是如果使用React架构项目,或者说,如果使用React规划项目的能力不是看看API文章就能掌握的。还是要前端大佬带,希望大佬一本,你们是如何使用React规划项目的小册[可怜]
“
想小小调研一下,你们更想看 React 哪些方面的?仅仅是 React,不涉及其他路由或者状态管理
”
点赞
回复
NorthMaple的头像
删除
底层劳动力 @ 底层公司
怎么加群?扫码回复了不理我
3
回复
前端Ah的头像
删除
web前端
想问下项目中所有的定义的对象 数组 变量及函数 都需要去指定类型吗?
点赞
3
删除
(作者)
一般来说后续无类型依赖的对象、数组、变量可以不指定类型,让 TS 自己推导。类型依赖指的是,假设你声明了一个对象,后续你对它的操作全都是访问、赋值,而不会说将这个对象的类型在其他类型结构中使用(比如函数返回值类型),也不会需要让它被工具类型进行处理得到新的类型,这时其实只要让 TS 推导出字面量类型就好了。当然,如果对象中的属性并不能通过推导正确得到(比如联合类型,TS从值是推导不出来的),此时还是进行类型标注为好。对于函数的话则是推荐尽可能进行类型标注。
4
回复
删除
[送心]
“
一般来说后续无类型依赖的对象、数组、变量可以不指定类型,让 TS 自己推导。类型依赖指的是,假设你声明了一个对象,后续你对它的操作全都是访问、赋值,而不会说将这个对象的类型在其他类型结构中使用(比如函数返回值类型),也不会需要让它被工具类型进行处理得到新的类型,这时其实只要让 TS 推导出字面量类型就好了。当然,如果对象中的属性并不能通过推导正确得到(比如联合类型,TS从值是推导不出来的),此时还是进行类型标注为好。对于函数的话则是推荐尽可能进行类型标注。
”
点赞
回复
删除
[捂脸] 对,初次接触时总会想每个变量都标注类型,然后迷失。。
“
一般来说后续无类型依赖的对象、数组、变量可以不指定类型,让 TS 自己推导。类型依赖指的是,假设你声明了一个对象,后续你对它的操作全都是访问、赋值,而不会说将这个对象的类型在其他类型结构中使用(比如函数返回值类型),也不会需要让它被工具类型进行处理得到新的类型,这时其实只要让 TS 推导出字面量类型就好了。当然,如果对象中的属性并不能通过推导正确得到(比如联合类型,TS从值是推导不出来的),此时还是进行类型标注为好。对于函数的话则是推荐尽可能进行类型标注。
”
点赞
回复
zhedream的头像
删除
全栈工程师 @ @zhedream
打卡 2022年6月23日
2
回复
远山眉u的头像
删除
前端开发工程师
哇唔哇唔
1
回复
行走的仆累的头像
删除
前端工程师 @ 顺丰科技有限公司
打卡!
1
回复
婧大jingda的头像
删除
前端崽
1
2
回复
undefinedNullObject的头像
删除
尝尝鲜✈️
1
回复
xhavit的头像
删除
定义的类型一般怎么放呢?是跟代码一起还是单独放文件?大家是怎么处理的呢?作者能分享下吗?
点赞
3
删除
(作者)
仅项目内使用的类型,推荐是 `src/types` 这么一个目录,然后内部又分 `shared.ts` `tool-type.ts` `env.d.ts` `user.ts` 等文件,分别代表可重用的类型别名、工具类型、环境的类型声明(一般会在这里去扩展全局 interface 接口等,所以使用 .d.ts)以及业务模型强相关的类型定义。在导入时,可以使用 import type { } 来导入类型。
2
回复
删除
这个可以在小册中使用类似的例子来体现一下么? 大佬~
“
仅项目内使用的类型,推荐是 `src/types` 这么一个目录,然后内部又分 `shared.ts` `tool-type.ts` `env.d.ts` `user.ts` 等文件,分别代表可重用的类型别名、工具类型、环境的类型声明(一般会在这里去扩展全局 interface 接口等,所以使用 .d.ts)以及业务模型强相关的类型定义。在导入时,可以使用 import type { } 来导入类型。
”
1
回复
删除
通过大家的这些问题可以看出,前端项目的架构就是一个黑盒子,必须得大佬带,一人血书求大佬出个架构项目规范和实践小册,我买爆[流泪]
“
仅项目内使用的类型,推荐是 `src/types` 这么一个目录,然后内部又分 `shared.ts` `tool-type.ts` `env.d.ts` `user.ts` 等文件,分别代表可重用的类型别名、工具类型、环境的类型声明(一般会在这里去扩展全局 interface 接口等,所以使用 .d.ts)以及业务模型强相关的类型定义。在导入时,可以使用 import type { } 来导入类型。
”
点赞
回复
前端卞同学的头像
删除
打卡学习[大笑]
点赞
回复
爱吃鱼的桶哥Z的头像
删除
伪 · 全栈打杂攻城狮
来打卡学习了~
点赞
回复
BingoS的头像
删除
全都是文字 不是视频?
点赞
1
删除
图文课程哈~
点赞
回复
codermao的头像
删除
web实习 @ 小红书
打卡打卡 跟着大佬学习
点赞
回复
bakenray的头像
删除
公司打杂 @ 打杂公司
很赞,正好在用ts开发新项目,也深造一下,希望跟完,项目也能翻新一边。
1
回复
汪啊汪的头像
删除
冲冲冲
点赞
回复
神三元的头像
删除
公众号 「三元同学」 @ 字节跳动
支持不渡老师的 ts 小册,绝对优质!
3
3
删除
活捉大佬
1
回复
删除
三元哥也来了
1
回复
删除
买买买
1
回复
The action has been successful