TypeScript的10个缺点

在这里插入图片描述

文章目录

    • 1. 语法繁琐
    • 2. 难以集成到一些工作流程
    • 3. 学习成本高
    • 4. 代码量多
    • 5. 编译时间长
    • 6. 在小型项目中无必要性
    • 7. 可读性降低
    • 8. 抽象层次增加
    • 9. 缺少类型定义
    • 10. 生态系统

1. 语法繁琐

TypeScript 的类型注解、泛型等语法增加了代码的复杂度和学习难度,对小型项目来说使用 TypeScript 可能比 JavaScript 更麻烦。

下面是一个使用 TypeScript 的类定义,示例中定义了一个父类和一个继承自父类的子类:

class Animal {public name: string;protected age: number;constructor(name: string, age?: number) {this.name = name;this.age = age ? age : 0;}public move(distance: number) {console.log(`${this.name} moved ${distance} meters.`);}
}class Dog extends Animal {private readonly breed: string;constructor(name: string, breed: string, age?: number) {super(name, age);this.breed = breed;}bark() {console.log(`${this.name} is a ${this.breed} dog and is barking.`);}
}const dog = new Dog("Buddy", "German Shepherd", 2);
dog.move(100);
dog.bark();

相比于原生的 JavaScript这段代码添加了许多类型注解、访问修饰符等语法,使代码相对繁琐,特别是对于刚刚接触 TypeScript 的开发人员来说可能会感到不适应。而且如果是一些小型项目来说,使用 TypeScript 可能会带来更多的负担。

2. 难以集成到一些工作流程

对于一些注重快速迭代、自由度高的团队,增加 TypeScript 处理过程可能拖延项目进度。

TypeScript 的难以集成到某些工作流程是因为在某些工具、框架和库的处理上需要一些额外的设置和工作。

下面是一些可能需要应对的情况:

  1. 一些第三方包没有 TypeScript 类型定义:在使用 TypeScript 开发时,如果使用到一些第三方包,需要编写相应的 TypeScript 类型定义文件。但是有时这些依赖包没有相应的类型定义文件,这就需要自己编写,这可能会拖延项目进展,增加开发难度。

  2. 集成到前端构建工具:比如一些前端工具和框架,如 Babel、webpack、Rollup 等,如果要使用 TypeScript,需要额外添加 TypeScript 相关插件或者配置,这对于没有使用 TypeScript 的项目来说需要额外的学习成本和时间成本。

  3. 与编辑器的集成:许多编辑器支持 TypeScript,如 VSCode、WebStorm 等,但是有时可能需要配置编辑器才能合适地支持 TypeScript,或者解决一些编辑器上的 bug。

  4. 与团队的配合:使用 TypeScript 要求团队成员要有相应的 TypeScript 知识,并且遵循相应的 TypeScript 规范,否则可能会引起一些风格上的问题或者导致代码冲突。

3. 学习成本高

使用 TypeScript 需要花费时间学习其语法,对于刚接触 TypeScript 的开发人员来说可能会感到困惑。

TypeScript 相对于 JavaScript 有所增加的类型注解、泛型、访问修饰符、接口等等概念,可能会给开发人员带来学习上的额外负担。

下面是 TypeScript 学习成本高主要体现在哪些方面。

  1. 类型系统TypeScript 是一种静态类型的编程语言,需要开发人员掌握类型系统的相关概念,如变量类型、函数类型、泛型等等,这对于初学者来说可能需要一定的学习成本。

  2. 类型注解TypeScript 需要使用注解来描述变量、函数、类等的类型,这是 JavaScript 中没有的一种语法,因此需要进一步学习。

  3. 泛型:泛型是 TypeScript 中一个重要的概念,对于初学者来说可能比较难以理解。同时,泛型的语法也比较繁琐,可能需要一定的时间去理解和记忆。

  4. 工具链:使用 TypeScript 还需要掌握一些 TypeScript 相关工具和库的使用,比如 TypeScript 编译器、类型定义文件、编辑器插件等等,这同样需要一定的学习成本。

  5. 社区支持:与 JavaScript 相比,TypeScript 相对较新,因此 TypeScript 生态环境、相关工具库、社区支持等方面可能不如 JavaScript 成熟,这可能对开发者的学习和使用带来一些额外的负担。

4. 代码量多

由于需要添加类型注解,单个 TypeScript 文件会比同等 JavaScript 文件更大,导致大项目中需要编写更多代码。

TypeScript 可以通过类型注解、接口等更加严格地定义变量的类型和函数的参数、返回值等,这使得代码更加灵活但也更加繁琐。因此,相对于 JavaScript,使用 TypeScript 可能需要编写更多的代码。

下面是一个示例:

// JavaScript 版本
function sum(a, b) {return a + b;
}
// TypeScript 版本
function sum(a: number, b: number): number {return a + b;
}

从上面的代码可以看出,TypeScript 版本相比于 JavaScript 版本需要增加更多的类型注解,虽然注解可以使函数更加明确,但也需要编写更多的代码。

再举一个 TypeScript 定义类的例子:

// JavaScript 版本
class Person {constructor(name, age) {this.name = name;this.age = age;}sayHi() {console.log(`Hi, I'm ${this.name}.`);}
}// TypeScript 版本
class Person {private name: string;private age: number;constructor(name: string, age: number) {this.name = name;this.age = age;}public sayHi(): void {console.log(`Hi, I'm ${this.name}.`);}
}

从上面的代码可以看出,在 TypeScript 中,需要通过访问修饰符明确数据成员的访问权限,需要使用冒号指定类型,并且需要显式地声明函数的返回类型。因此,相比于 JavaScript,TypeScript 可以使代码更加严格、更加清晰,但也需要编写更多的代码。

5. 编译时间长

使用 TypeScript 会增加代码编译的时间,对于需要快速反馈的项目可能不适合。

6. 在小型项目中无必要性

对于小规模的项目来说,使用 TypeScript 对改进代码质量的影响不会非常显著,可能完全没有必要添加 TypeScript

7. 可读性降低

由于添加了类型注解、泛型等语法,代码可能变得更难以阅读和理解。

8. 抽象层次增加

使用 TypeScript 可能会增加代码中的抽象层次,对于正在开发的项目、零散的代码更难以快速编写。

9. 缺少类型定义

不是所有的 JavaScript 库和框架都有相应的 TypeScript 类型定义文件,这就需要手动编写类型定义文件,这是一个比较繁琐的工作。

10. 生态系统

尽管 TypeScript 在近些年来使用越来越广泛,但是相比原生 JavaScript 的生态系统还是不够成熟。使用 TypeScript 可能需要依赖于第三方库或者自己编写类型定义文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/255609.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Mac电脑怎么设置动态桌面,heic动态桌面壁纸怎么使用

Mac动态桌面,它可以仅设定一张高效图片文件「High Efficiency Image File Format(简称 HEIF)」后,随着时间的推移改变桌面显示的内容。那么后缀为 .heic动态桌面壁纸怎么用呢? 动态壁纸设置的两个方法 动态壁纸设置方法…

怎么把html变成桌面壁纸,新手必看,把静态壁纸变为动态壁纸怎么设置?

现今,作为我们日常生活以及工作当中十分重要的通讯工具之一的手机,越来越多的人已经离不开它了,除了简单的打电话之外,它还可以为我们进行导航、拍照以及实时支付等等,在智能手机烂大街的时代,怎么能少得了…

苹果屏保壁纸_Live Photo壁纸苹果版下载-Live Photo壁纸APP

Live Photo壁纸是一款适用于iPhone6s系列之后的iPhone手机壁纸软件。Live Photo壁纸是基于3D Touch 功能研发的动态壁纸,它可以让你的屏保动起来,虽然苹果自带了一些Live Photo壁纸,但小编认为还是太少了。 Live Photo动态壁纸是基于3D Touch…

win10动态壁纸怎么设置_技术贴,安卓手机如何设置类似iPhone的炫酷动态壁纸

很多人或许很羡慕苹果那种动态壁纸,解锁点亮屏幕就动一下,感觉非常炫酷。但奈何自己是安卓手机没法体验,不知道如何设置,所以接下来小编带大家来看看如何体验Pixel动态壁纸 先欣赏几组小编个人觉得比较好看的壁纸 那到底这样设置呢…

antd tree 动态添加_推荐三款动态壁纸软件,足够让你的桌面惊艳!

点击上方“码农的后花园”,选择“星标” 公众号 精选文章,第一时间送达 今天给大家推荐三款动态壁纸软件,给你的桌面添加一点精彩,心情也更美呢 ~ 1,WinDynamicDesktop 进入软件界面,默认提供了5套苹果系统使用过的动态…

swift 制作动态壁纸(live)实况图

前言 我相信老铁们都是走在时代前沿的弄潮儿,那么为你们的爱机自定义一张动态壁纸,我想这应该是一个 Good idea😎,如下图便是我制作的动态壁纸。 制作动态壁纸 动态壁纸在iOS中其实就是用实况图设置锁屏壁纸,在锁频界面…

android 时钟旋转动画,抖音上超火的时间轮盘时钟轮盘八卦太极动态壁纸软件分享安卓苹果都可以设置!...

原标题:抖音上超火的时间轮盘时钟轮盘八卦太极动态壁纸软件分享安卓苹果都可以设置! 最近抖音上面特别火的一个视频,时间轮盘壁纸,之前有给大家分享过安卓版本的,今天再给大家分享一个苹果版的; 安卓版&…

【Mac新手必看】Desktop Picture壁纸文件夹找不到怎么办?苹果壁纸设置教程

相信很多朋友像小编一样,喜欢设置各种有意思的桌面壁纸,不管是工作还是生活,每天对着自己喜欢的壁纸心情都超级棒呢~那这些Mac壁纸小技巧你们知道吗? 如何设置桌面壁纸? 你可以点击屏幕左上角的“苹果图标”-“系统偏…

动态壁纸安卓_抖音火爆的时间罗盘壁纸,苹果安卓都支持!

点击【抖音壁纸表情】- 右上角找到【…】 立刻设我为星标/置顶 - 谢谢你、 求图请加V:moonkiss0505 长按保存 点击放大 图片很大,请在 W i f i 下浏览 大家好,这两天大家的抖音是不是被这款时间轮盘壁纸给刷爆了啊,在抖音真是…

python实现动态壁纸_python学习笔记 | macOS Big Sur动态壁纸食用指南

目录 前言 北京时间23日凌晨1点,苹果WWDC2020大会开幕。在发布会上,苹果正式发布了新版macOS,并将其命名为“Big Sur”。 相比于外界争议最大的UI界面,令我更为关注的是这次的系统动态壁纸,跟过去几年的版本更新一样…

苹果5壁纸_冷高轮时间wallpaper Engine动态时钟壁纸 小人人体形状造型数字 手势数字 麻将数字 扑克数字 时钟壁纸...

冷高轮时间wallpaper Engine电脑动态时钟壁纸壁纸 小人人体形状造型数字 手势数字 麻将数字 扑克数字 动态时钟壁纸 1.需要在steam中下载wallpaper Engine 安装好wallpaper Engine后进入壁纸软件 1.点击创意工坊 2.搜索时钟全称(此时由于没选择标签可能指搜索出来一…

动态壁纸安卓_抖音上超火的时间轮盘动态壁纸,安卓苹果都可以设置!个性好看...

今天给大家分享一个最近很火的时间轮盘带姓氏的壁纸 效果呢就像我们现在看到的这样 看起来呢有点像古墓的感觉 同时我们常见的带姓氏的壁纸我也已经给大家准备好了 制作呢也非常的简单 我们只需要在微信的搜索页面搜索kx2687 点击搜一搜 点击进入 在下方的对话框中回复338 我们…

chatgpt赋能python:Python中的连接符:介绍与应用

Python中的连接符:介绍与应用 在Python编程中,连接符起着关键性的作用,它是连接不同代码部分的纽带。本篇文章将重点介绍几种常用的Python连接符。 一、加号连接符() 加号连接符最常见,用于连接不同的字…

JGJ107-2016 钢筋机械连接技术规程 免费下载

【资源介绍】 资源名称:JGJ107-2016 钢筋机械连接技术规程 资源分类: 建筑工程标准规范 其他简介:JGJ107-2016 钢筋机械连接技术规程 【资源下载】 链接:https://pan.baidu.com/s/1IZdTq2ga8V2psdek4UVQNA 提取码&#xff1…

钢筋的字体表示

1、把字体下载解压后,复制到控制面板的字体里面ok,打开word然后在开始\附件\系统工具\字符映射表打开然后在复制钢筋型号到word中就ok了2、先把字体COPY到windows/font文件夹里,在word中选用"SJQY"字体,然后点”插入/符号“里面有就钢筋的符号…

Revit:放置标高和轴网方法总结

本次系列教学中涉及到的建模方法在Revit2018和Revit2020均适用 首先使用快捷键“VV”,在“场地”下找到“项目基点”,该点表示在二维坐标系中的原点,坐标始终为(0,0),在三维坐标系同样表示原点…

通达信破底翻形态选股公式,选出破底之后再翻回的标的

破底翻形态,顾名思义就是跌破底部之后再翻回来。编写不带未来函数的形态类公式还是比较难的,理解也不容易。通过今天介绍的破底翻形态选股公式,希望能给大家一些思路。 一、FINDLOWBARS、FINDLOWBARS函数 1、FINDLOWBARS 含义:计…

LabVIEW2023中文版软件安装包、工具包、安装教程下载

下载链接:LabVIEW及工具包大全-三易电子工作室http://blog.eeecontrol.com/labview6666 《LabVIEW2023安装图文教程》 1、解压后,双击install.exe安装 2、选中“我接受上述许可协议”,点击下一步 3、点击下一步,安装NI Package …

如何拆分PDF,PDF拆分成多个PDF的方法

如何拆分PDF文件呢?我们想要将PDF文件拆分成多个PDF文件需要怎么操作呢?其实方法很简单,只不过需要使用到专业的PDF编辑器,下面小编就使用迅捷PDF编辑器为大家操作一下PDF拆分的方法。 操作软件:迅捷PDF编辑器 具体操作…

Acrobat如何将PDF拆分为多个文档

今天小e打算分享一个电子书,结果一上传准备发布外链的时候,居然超出了100M,只有会员才可以分享100M以上的文档或者软件,小e穷,没钱升会员,所以只能把这个完整的电子书拆分成两份,特把拆分的方法…