Home

Awesome

深入理解 TypeScript

All Contributors GitHub forks GitHub stars GitHub issues GitHub last commit PRs Welcome

此书是 《TypeScript Deep Dive》 的中文翻译版,感谢作者 Basarat 的付出。

如果你喜欢纸质书籍,可以通过京东或者当当,来购买此书。

你可以通过订阅该公众号,来获取更多有趣的内容。

Why

downloads

数据来源:npm 包下载量

如你所见,TypeScript 发展至今,已经成为大型项目的标配,其提供的静态类型系统,大大增强了代码的可读性以及可维护性;同时,它提供最新和不断发展的 JavaScript 特性,能让我们建立更健壮的组件。

《TypeScript Deep Dive》 是一本很好的开源书,从基础到深入,很全面的阐述了 TypeScript 的各种魔法,不管你是新手,还是老鸟,它都将适应你。此外,它不同于 TypeScript 官方给出的文档(当然 TypeScript 给出的文档是很好的),在此书中,结合实际应用下的场景用例,你将能更深入的理解 TypeScript。

如今社区已经存在部分翻译,但都似乎已经停止更新。

于是在某天的某个冲动之下,这个 RP 就诞生了。

翻译内容

《TypeScript Deep Dive》 书中包含一部分 JavaScript Future 和一些其他的内容,在这里,我们并不打算翻译它,如果你有兴趣,可以查看原书中 JavaScript Future 的有关章节。

由于 TypeScript 更新频繁,除了上文中提到翻译部分,将会加入 TypeScript 的 Release,同时我也将总结出工作中一些有意思的点,希望和大家相互学习,一起进步。

此外,在不违背原作者本意前提下,为了更直观的表达,部分内容将采用意译,而非直译。

Contributors

Thanks goes to these wonderful people (emoji key):

<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> <!-- prettier-ignore -->
<img src="https://avatars3.githubusercontent.com/u/22933931?v=4" width="64px;" alt="三毛"/><br /><sub><b>三毛</b></sub><br />📖<img src="https://avatars3.githubusercontent.com/u/22536347?v=4" width="64px;" alt="KnorienChang"/><br /><sub><b>KnorienChang</b></sub><br />📖<img src="https://avatars0.githubusercontent.com/u/7829098?v=4" width="64px;" alt="阿卡琳"/><br /><sub><b>阿卡琳</b></sub><br />📖<img src="https://avatars1.githubusercontent.com/u/2362335?v=4" width="64px;" alt="hopalay"/><br /><sub><b>hopalay</b></sub><br />📖<img src="https://avatars1.githubusercontent.com/u/13592559?v=4" width="64px;" alt="Xing Liu"/><br /><sub><b>Xing Liu</b></sub><br />📖<img src="https://avatars1.githubusercontent.com/u/23144765?v=4" width="64px;" alt="chenwangji"/><br /><sub><b>chenwangji</b></sub><br />📖<img src="https://avatars3.githubusercontent.com/u/28107509?v=4" width="64px;" alt="老农爱盐碱地"/><br /><sub><b>老农爱盐碱地</b></sub><br />📖
<img src="https://avatars2.githubusercontent.com/u/9589686?v=4" width="64px;" alt="Necros"/><br /><sub><b>Necros</b></sub><br />📖<img src="https://avatars1.githubusercontent.com/u/8039013?v=4" width="64px;" alt="Xu Jihan"/><br /><sub><b>Xu Jihan</b></sub><br />📖<img src="https://avatars0.githubusercontent.com/u/7876498?v=4" width="64px;" alt="Yu"/><br /><sub><b>Yu</b></sub><br />📖<img src="https://avatars0.githubusercontent.com/u/11386122?v=4" width="64px;" alt="Yoga Lin"/><br /><sub><b>Yoga Lin</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/12699258?v=4" width="64px;" alt="G"/><br /><sub><b>G</b></sub><br />📖<img src="https://avatars3.githubusercontent.com/u/37131109?v=4" width="64px;" alt="Undrum"/><br /><sub><b>Undrum</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/22429236?v=4" width="64px;" alt="Zong"/><br /><sub><b>Zong</b></sub><br />📖
<img src="https://avatars0.githubusercontent.com/u/12185175?v=4" width="64px;" alt="LXVC"/><br /><sub><b>LXVC</b></sub><br />📖<img src="https://avatars0.githubusercontent.com/u/20592013?v=4" width="64px;" alt="Whale"/><br /><sub><b>Whale</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/23274794?v=4" width="64px;" alt="getdaydream"/><br /><sub><b>getdaydream</b></sub><br />📖<img src="https://avatars3.githubusercontent.com/u/9999765?v=4" width="64px;" alt="Ling ZiQing"/><br /><sub><b>Ling ZiQing</b></sub><br />📖<img src="https://avatars0.githubusercontent.com/u/10740043?v=4" width="64px;" alt="izayl"/><br /><sub><b>izayl</b></sub><br />📖<img src="https://avatars1.githubusercontent.com/u/21151080?v=4" width="64px;" alt="Moorez"/><br /><sub><b>Moorez</b></sub><br />📖<img src="https://avatars3.githubusercontent.com/u/26736658?v=4" width="64px;" alt="萤火之未"/><br /><sub><b>萤火之未</b></sub><br />📖
<img src="https://avatars1.githubusercontent.com/u/6301070?v=4" width="64px;" alt="xfields"/><br /><sub><b>xfields</b></sub><br />📖<img src="https://avatars0.githubusercontent.com/u/16488686?v=4" width="64px;" alt="ZhaZheng"/><br /><sub><b>ZhaZheng</b></sub><br />📖<img src="https://avatars1.githubusercontent.com/u/2196373?v=4" width="64px;" alt="弘树@阿里"/><br /><sub><b>弘树@阿里</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/1576121?v=4" width="64px;" alt="wangjingchao"/><br /><sub><b>wangjingchao</b></sub><br />📖<img src="https://avatars1.githubusercontent.com/u/17974631?v=4" width="64px;" alt="IWANABETHATGUY"/><br /><sub><b>IWANABETHATGUY</b></sub><br />📖<img src="https://avatars3.githubusercontent.com/u/19408042?v=4" width="64px;" alt="Payton Tang"/><br /><sub><b>Payton Tang</b></sub><br />📖<img src="https://avatars3.githubusercontent.com/u/22462424?v=4" width="64px;" alt="Rem486"/><br /><sub><b>Rem486</b></sub><br />📖
<img src="https://avatars2.githubusercontent.com/u/11501493?v=4" width="64px;" alt="Steve Young"/><br /><sub><b>Steve Young</b></sub><br />📖<img src="https://avatars0.githubusercontent.com/u/17901361?v=4" width="64px;" alt="olive.wang"/><br /><sub><b>olive.wang</b></sub><br />📖<img src="https://avatars1.githubusercontent.com/u/7333266?v=4" width="64px;" alt="Rainy"/><br /><sub><b>Rainy</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/3955437?v=4" width="64px;" alt="随风"/><br /><sub><b>随风</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/7371867?v=4" width="64px;" alt="大板栗"/><br /><sub><b>大板栗</b></sub><br />📖<img src="https://avatars0.githubusercontent.com/u/12592949?v=4" width="64px;" alt="Superman"/><br /><sub><b>Superman</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/18691865?v=4" width="64px;" alt="Payton Deng"/><br /><sub><b>Payton Deng</b></sub><br />📖
<img src="https://avatars1.githubusercontent.com/u/11886447?v=4" width="64px;" alt="Wang Kang"/><br /><sub><b>Wang Kang</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/29950066?v=4" width="64px;" alt="wuchouchou"/><br /><sub><b>wuchouchou</b></sub><br />📖<img src="https://avatars3.githubusercontent.com/u/13050584?v=4" width="64px;" alt="EastblueOkay"/><br /><sub><b>EastblueOkay</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/9530270?v=4" width="64px;" alt="Nic"/><br /><sub><b>Nic</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/20539402?v=4" width="64px;" alt="重庆崽儿Brand"/><br /><sub><b>重庆崽儿Brand</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/17774285?v=4" width="64px;" alt="YanYuan"/><br /><sub><b>YanYuan</b></sub><br />📖<img src="https://avatars0.githubusercontent.com/u/13215737?v=4" width="64px;" alt="JunaYa"/><br /><sub><b>JunaYa</b></sub><br />📖
<img src="https://avatars1.githubusercontent.com/u/28621732?v=4" width="64px;" alt="黎聪"/><br /><sub><b>黎聪</b></sub><br />📖<img src="https://avatars0.githubusercontent.com/u/33458200?v=4" width="64px;" alt="WANGXUEFENG"/><br /><sub><b>WANGXUEFENG</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/4365899?v=4" width="64px;" alt="Xiaohan Li"/><br /><sub><b>Xiaohan Li</b></sub><br />📖<img src="https://avatars3.githubusercontent.com/u/15643321?v=4" width="64px;" alt="dingkang"/><br /><sub><b>dingkang</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/3340597?v=4" width="64px;" alt="zhangciwu"/><br /><sub><b>zhangciwu</b></sub><br />📖<img src="https://avatars3.githubusercontent.com/u/25540882?v=4" width="64px;" alt="Jack"/><br /><sub><b>Jack</b></sub><br />📖<img src="https://avatars3.githubusercontent.com/u/27674875?v=4" width="64px;" alt="masterZSH"/><br /><sub><b>masterZSH</b></sub><br />📖
<img src="https://avatars1.githubusercontent.com/u/30228406?v=4" width="64px;" alt="Eve"/><br /><sub><b>Eve</b></sub><br />📖<img src="https://avatars0.githubusercontent.com/u/25718776?v=4" width="64px;" alt="Xuemuyang"/><br /><sub><b>Xuemuyang</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/20091279?v=4" width="64px;" alt="Jasery"/><br /><sub><b>Jasery</b></sub><br />📖<img src="https://avatars1.githubusercontent.com/u/21683339?v=4" width="64px;" alt="Baskerville*"/><br /><sub><b>Baskerville*</b></sub><br />📖<img src="https://avatars0.githubusercontent.com/u/22132265?v=4" width="64px;" alt="FishPlusOrange"/><br /><sub><b>FishPlusOrange</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/12277082?v=4" width="64px;" alt="月迷津渡"/><br /><sub><b>月迷津渡</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/16096567?v=4" width="64px;" alt="evinma"/><br /><sub><b>evinma</b></sub><br />📖
<img src="https://avatars3.githubusercontent.com/u/24221472?v=4" width="64px;" alt="Suyan"/><br /><sub><b>Suyan</b></sub><br />📖<img src="https://avatars0.githubusercontent.com/u/5390013?v=4" width="64px;" alt="cherry-man"/><br /><sub><b>cherry-man</b></sub><br />📖<img src="https://avatars3.githubusercontent.com/u/21698272?v=4" width="64px;" alt="蔡南坤"/><br /><sub><b>蔡南坤</b></sub><br />📖<img src="https://avatars0.githubusercontent.com/u/16097887?v=4" width="64px;" alt="chenc"/><br /><sub><b>chenc</b></sub><br />📖<img src="https://avatars3.githubusercontent.com/u/20529542?v=4" width="64px;" alt="Xinxing Li"/><br /><sub><b>Xinxing Li</b></sub><br />📖<img src="https://avatars3.githubusercontent.com/u/7441504?v=4" width="64px;" alt="GuangHui"/><br /><sub><b>GuangHui</b></sub><br />📖<img src="https://avatars3.githubusercontent.com/u/36765589?v=4" width="64px;" alt="odzcdut"/><br /><sub><b>odzcdut</b></sub><br />📖
<img src="https://avatars2.githubusercontent.com/u/39004078?v=4" width="64px;" alt="项鸿伟"/><br /><sub><b>项鸿伟</b></sub><br />📖<img src="https://avatars3.githubusercontent.com/u/15844643?v=4" width="64px;" alt="xiezhichao"/><br /><sub><b>xiezhichao</b></sub><br />📖<img src="https://avatars1.githubusercontent.com/u/23474513?v=4" width="64px;" alt="Charles"/><br /><sub><b>Charles</b></sub><br />📖<img src="https://avatars1.githubusercontent.com/u/31770433?v=4" width="64px;" alt="Jexxie"/><br /><sub><b>Jexxie</b></sub><br />📖<img src="https://avatars3.githubusercontent.com/u/16217316?v=4" width="64px;" alt="Sean Wong"/><br /><sub><b>Sean Wong</b></sub><br />📖<img src="https://avatars0.githubusercontent.com/u/167966?v=4" width="64px;" alt="bluelovers"/><br /><sub><b>bluelovers</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/24710064?v=4" width="64px;" alt="Celery"/><br /><sub><b>Celery</b></sub><br />📖
<img src="https://avatars3.githubusercontent.com/u/1744713?v=4" width="64px;" alt="chenxiaochun"/><br /><sub><b>chenxiaochun</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/41691152?v=4" width="64px;" alt="Yates"/><br /><sub><b>Yates</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/10962426?v=4" width="64px;" alt="IGoR"/><br /><sub><b>IGoR</b></sub><br />📖<img src="https://avatars0.githubusercontent.com/u/7764115?v=4" width="64px;" alt="byog"/><br /><sub><b>byog</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/5096493?v=4" width="64px;" alt="whincwu"/><br /><sub><b>whincwu</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/13433074?v=4" width="64px;" alt="康东扬"/><br /><sub><b>康东扬</b></sub><br />📖<img src="https://avatars3.githubusercontent.com/u/2621619?v=4" width="64px;" alt="Kenny"/><br /><sub><b>Kenny</b></sub><br />🚇
<img src="https://avatars0.githubusercontent.com/u/20441896?v=4" width="64px;" alt="AllenLee"/><br /><sub><b>AllenLee</b></sub><br />📖<img src="https://avatars3.githubusercontent.com/u/7913751?v=4" width="64px;" alt="xiangming25"/><br /><sub><b>xiangming25</b></sub><br />📖<img src="https://avatars1.githubusercontent.com/u/18076739?v=4" width="64px;" alt="Chanvin Xiao"/><br /><sub><b>Chanvin Xiao</b></sub><br />📖<img src="https://avatars0.githubusercontent.com/u/25996236?v=4" width="64px;" alt="Aaron Xie"/><br /><sub><b>Aaron Xie</b></sub><br />📖<img src="https://avatars1.githubusercontent.com/u/7925831?v=4" width="64px;" alt="nulIptr"/><br /><sub><b>nulIptr</b></sub><br />📖<img src="https://avatars3.githubusercontent.com/u/1717023?v=4" width="64px;" alt="Tao Huang"/><br /><sub><b>Tao Huang</b></sub><br />📖<img src="https://avatars1.githubusercontent.com/u/19400116?v=4" width="64px;" alt="Yunfly"/><br /><sub><b>Yunfly</b></sub><br />📖
<img src="https://avatars2.githubusercontent.com/u/9930358?v=4" width="64px;" alt="Will Wang"/><br /><sub><b>Will Wang</b></sub><br />📖<img src="https://avatars1.githubusercontent.com/u/19852293?v=4" width="64px;" alt="SyMind"/><br /><sub><b>SyMind</b></sub><br />📖<img src="https://avatars2.githubusercontent.com/u/29867660?v=4" width="64px;" alt="yuhengshen"/><br /><sub><b>yuhengshen</b></sub><br />📖<img src="https://avatars0.githubusercontent.com/u/48615696?v=4" width="64px;" alt="chenfeng"/><br /><sub><b>chenfeng</b></sub><br />📖
<!-- ALL-CONTRIBUTORS-LIST:END -->

How to contribute

你可以:

希望你在翻译或者 PR 之前,阅读中文文章排版指北

公众号

<img src="./docs/.vuepress/public/qrcode.jpg" width="200" />

最后

如果你和我一样对 TypeScript 充满兴趣,可以订阅(star)本项目,及时收到有关于此项目的更新。

如果你对文章有任何疑问,欢迎提交 issues 和我交流。

如果你认为有些地方翻译不够准确,或者你想补充一些文中没提到但是非常有意思的知识点,欢迎 PR