你好,欢迎收听极客视点。

此前,公众号“前端之巅”编译了开发者哈利勒·斯坦姆勒(Khalil Stemmler)的一篇文章,斯坦姆勒探讨了在什么情况下绝对应该使用 TypeScript 这种类型严格的编程语言。斯坦姆勒认为,在性能系统问题、嵌入式系统问题和复杂领域问题这三种软硬件问题中,只有复杂领域问题是一定要使用 TypeScript 的领域。此外,还有一些因素会让你知道什么时候应该在 JavaScript 项目中使用 TypeScript,具体如下。

1. 代码大小

代码大小通常与复杂领域问题有关,在复杂领域问题中,一个大型代码库对应着一个复杂领域,但并非总是如此。

当项目的代码量达到一定大小时,开发人员就很难跟踪已有的所有内容,并且经常会重复实现一些已经存在的代码部分。当开发新手开始在一个体积已经很大的代码库上编程时,这个问题就会特别明显。

VS Code 的自动完成和 Intellisense 功能可以帮助开发人员在大型项目中导航。它和 TypeScript 搭配使用非常顺手,但是在 JavaScript 上却会受到一定的限制。

如果一个项目会一直保持简单且小巧的设计,那就不推荐使用 TypeScript 了。

2. 生产软件与宠物项目

生产软件指的是你很在乎的那些代码,或者是一旦跑不起来就会给你添麻烦的那些代码,你的测试也是针对这些代码编写的。常见的一条经验法则是说,如果你在乎某些代码,就需要对它们进行单元测试。

宠物项目正如其字面意义所言,你想做什么就可以做什么,不需要什么专业承诺,用不着坚持任何工业标准。

但如果有一天,你的宠物项目会变成你的主要项目,进而转变为生产软件,这时候你就会头疼了;就因为你的宠物项目没有测试或类型,所以错误百出……

3. 缺乏单元测试

并非所有事物都是可以测试的,如果你没有单元测试,那么你能选择的最佳方案就是使用 TypeScript 进行编译时检查。接下来,如果你使用的是 React,那么下一步最好用 Prop 类型进行运行时检查。

但是,编译时检查不能取代单元测试。单元测试的优点在于它可以用任何语言编写,因此这里的 TypeScript 参数是无关紧要的。重点在于我们要编写测试,并且对代码能有信心。

4. 初创企业

在初创时期,你选择哪种语言并没那么重要,你要做的最重要的事情就是验证你的产品。

选择一种你了解的语言或工具会帮助你在将来扩展业务,但如果你完全不熟悉某种工具,还需要花时间学习它,那么它可能就不是你在启动阶段的最佳选择。

根据你的项目所处的发展阶段,你最重要的任务就是提高工作效率。对于语言,有没有类型都可以。当你构建出了人们真正想要的东西之后,随时可以将其重构为更好的设计。

5. 团队工作

当团队足够大时(因为问题足够大),最好使用一种有格调的(opinionated)框架,比如说前端用 Angular,后端用 TypeScript。

之所以使用这样的框架,是因为你限制了人们完成某件事时的可行途径。在 Angular 中,添加 Route Guard、使用依赖注入、连接路由、延迟加载和响应表单这些工作都只有一种主要方法。

这里的一大好处是 API 都被指定好了。

使用 TypeScript 时,我们可以节省大量时间并提高沟通效率。另外,如果你在一个大型团队中工作,并且需要尽量减少他人滥用你的代码的潜在途径,那么 TypeScript 就是帮助你解决这类问题的好帮手。

如果你在较小的团队中,更容易管理编码风格,更容易沟通交流。小团队可以使用 linting 工具,经常讨论完成任务所用的方式,再结合预提交的 hooks,这样就算没有 TypeScript 也可以做得非常成功。

6. 架构:React 和 Angular

很多开发人员之所以喜欢 React,大部分原因在于它能让开发人员凭借自己的意愿以优雅 / 巧妙的方式编写代码。

的确,React 能让你成为更优秀的 JavaScript 开发人员,因为它迫使你以不同的方式处理问题;它要求你必须了解 JavaScript 中 this 绑定的工作机制,并让你能用很多小组件组合成大型组件。

React 还可以让你拥有自己的风格。你可以用很多种方式来完成指定任务,比如在以下情况,编写原生的 React.js 应用:

代码库很小

写代码的只有你

在以下情况,你可以使用 TypeScript 编译:

写代码的超过 3 个人

代码库预计会很大

出于同样的原因,你也可以选择使用 Angular。

以上就是斯坦姆勒对 TypeScript 使用场景的看法,欢迎你在评论区留下你的观点,一起探讨。

typescript用什么软件写_什么情况下,你应该使用TypeScript?(下)相关推荐

  1. typescript用什么软件写_为什么都2019年了大家还喜欢用TypeScript?

    作者丨Saurabh Barot 2018 年发起的 Stack Overflow 开发人员调查揭示了业内关于不同编程语言.平台.库等的一些流行观点.基于这项研究可以看出,TypeScript 是比 ...

  2. typescript用什么软件写_用TypeScript写了个低配版H5美图工具

    前言 最近两月在学习canvas时候,发现很多有意思的技术能力,特别是在图像处理这一领域.让我想起大学课堂教学的<数字图像处理>(冈萨雷斯 版本).但是很遗憾的是,大学上完课应付考试后全部 ...

  3. opengl用什么软件写_汇才论文工具分享:写科研论文的都在用这些截图软件

    截图是一种学问,经常混迹论坛的相信都知道,"饶老师教你截图"的梗.由于经常有网友不使用系统自带的截图功能非要发手机屏拍的图,导致像素过低看不清,于是渐渐就行成了一种吐槽的梗,常见于 ...

  4. java开发计划怎么写_【精编范文】从事java,下一工作阶段的工作计划以及业绩目标,怎么写-精选word文档 (16页)...

    本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除! == 本文为word格式,下载后可方便编辑和修改! == 从事java,下一工作阶段的工作计划以及业绩目标, ...

  5. 如何评价软件写的好还是坏?

    软件自身是一种固化的思维,因此从本质上来看,软件是不可度量的. 但这并不意味着软件不需要度量,而只是说软件中的度量大多都有一定限度. 应用各种度量数据的时候一旦跨过这种限度,结果就会适得其反. 在这篇 ...

  6. 文本识别综述 <软件学报_王建新等、中国图象图形学报_刘崇宇等>

    1 软件学报_王建新 基于时序特征分类的方法 基于时序特征分类的方法首先利用卷积网络将图像转换为图像特征序列,然后采用循环神经网络或者卷积网络将图像特征序列识别为字符概率预测序列.鉴于图像特征序列长度 ...

  7. unity怎么导入系统的树_Unity5.0_树_软件教程_资源库

    摘要:Unity5.0_树_软件教程_资源库 树 Unity 的地形引擎 (Terrain Engine) 为树 (Trees) 提供 特殊支持.您可以在地形 (Terrain) 上放置上千棵树,然后 ...

  8. 软件项目管理_第4章 IT项目管理范围

    软件项目管理_第4章 IT项目管理范围 第4章 IT项目管理范围 单元测验 第4章 IT项目管理范围 单元测验 1单选(1分) 1. 是指包括生产项目产品及用于生产产品的过程的所有工作. C A.(A ...

  9. ITK:在没有写访问权的情况下迭代图像中的区域

    ITK:在没有写访问权的情况下迭代图像中的区域 内容提要 输出结果 输入 输出 C++实现代码 内容提要 遍历图像的某个区域(无写访问权限). 输出结果 输入 输出 255 255 255 255 2 ...

最新文章

  1. hdu5246超级赛亚ACMer
  2. 新京报快评:浙大设“新生高额奖学金”,为何就成了“抢生源”?
  3. man命令手册打开以后的使用方法
  4. [Quatsch]Quantum Or Optics
  5. python计算n阶乘中尾部零的个数_(Java)设计一个算法,计算出n阶乘中尾部零的个数...
  6. docker redis 删除集群_基于Docker的Redis集群实践
  7. 李开复:垂直搜索违背了搜索引擎的发展初衷
  8. USB转TTL、USB转串口、USB转RS232的区别
  9. java物流项目功能介绍_JAVAEE——BOS物流项目13:Quartz概述、创建定时任务、使用JavaMail发送邮件、HighCharts概述、实现区域分区分布图...
  10. vue全屏组件vue-fullscreen使用
  11. Excel创建堆积柱形混合折线图
  12. linux卸载杀毒软件clama,centos 6 安装clamav杀毒软件查毒
  13. 国家图书馆认证中国长峰制定的《婴幼儿血管瘤临床路径》
  14. 虚拟贴图理论篇之Texture Filtering
  15. 窗口全屏化得方法大全(5种方法,你都知道吗?)
  16. 赚的钱不花掉就不算自己的钱?
  17. Cmd批处理替换文件
  18. 推荐个WIN7下小巧的可转录声音的软件-Audio Record Wizard V6.99
  19. UML详解之基本元素-关系
  20. 管理计算机的作用是什么意思,admin是什么意思 Admin的用途介绍

热门文章

  1. 关于如何让ppt在你的ipad上不显示乱码
  2. 基于基因的生成式设计/艺术,CryptoKitties以太猫研究
  3. php中奖概率算法程序,PHP中奖概率的抽奖算法程序代码
  4. 今朝有酒今朝醉,明日愁来明日愁- 如何应对自己的坏习惯
  5. 内核启动参数详解、参数为什么这么设置
  6. Atmel基于ARM Cortex-M的全球最低功耗解决方案 突破超低功率性能瓶颈
  7. 思科交换机配置试题_《CISCO路由器配置》复习题
  8. ZCMU2165黄金矿工
  9. 幻灯片软件测试培训,《软件测试培训讲义》PPT幻灯片
  10. 每天六点起床!真的是考研标配么?