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 undefinedundefined 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