本篇文章向大家介绍新的TypeScript客户端脚本语言,主要涉及两个方面,一是传统JavaScript语言的弱点,二是TypeScript语言的优势。

一.JavaScript的弱点

1.弱类型,缺乏必要的类型检查

JavaScript因为是解释型的语言,没有编译器,只有在执行时,根据变量的赋值,才能确定变量的类型,这样对于开发人员定义与排错

带来一定的复杂度。

2.编程不够语义化,阅读有一定困难

JavaScript因为不是面向对象的编程语言,没有很好的类的思想,而是通过function实现。在一些复杂的实现中,特别是后来的代码阅读者

需要完全看完代码,才能很好理解代码的含义。另外因为不是面向对象的编程语言,在一些设计模式的实现上,通过原型方式实现,实现

非常的复杂,阅读非常的困难。如果后端开发人员要学习JavaScript,与已有的后端面向对象语言比如C#、Java有很大不同,存在一定的

学习成本。

3.代码不可分割,可维护性差

在后端开发中,通过多文件与名称空间的方式组织文件与代码,而JavaScript组织代码在这方面较差。

4.开发工具不够智能

目前大多数的开发工具对于JavaScript的智能提示有一定的局限性,相比后端面向对象的开发工具这方面有一定的差距。

二.TypeScript的优势

1.微软开源的客户端脚本语言,是JavaScript的超集

TypeScript是微软主导的脚本语言,所有JavaScript的功能在TypeScript中都兼容,另外谷歌的Angular 4前端框架也是基于TypeScript编写。

所以无论从功能还是主流厂商支持来讲,TypeScript都具有较大优势。

2.近似静态、编译型语言、强类型

TypeScript可以预先确定变量的类型,编译器会进行类型的检查,防止出现未知的错误。另外强类型支持string、number、boolean、Array、

泛型等多种类似后端编程语言比如C#、Java的特性。

3.智能感知和重构

通过集成开发工具,比如WebStorm、Visual Studio Code、Visual Studio等,可以获得与后端开发同样的智能感知能力和重构能力。

4.语义化、面向对象编程

通过TypeScript语言,可以实现语义化和面向对象的编程,比如类、方法、接口、静态等。

三.总结

TypeScript是强类型、面向对象的客户端脚本语言,可以完全替代原生的JavaScript编写的代码。

TypeScript通过与前端IDE工具,比如WebStorm或Visual Studio等很好的配合,自动转换成对应的ES5或ES6规范的JavaScript代码,方便使用。

总之一句话:在编写TypeScript代码时完全面向对象的实现,实现简单、阅读容易,而且完全转换成JavaScript代码,使用方便。

01-TypeScript概述的更多相关文章

  1. Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录

    一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...

  2. Java虚拟机JVM学习01 流程概述

    Java虚拟机JVM学习01 流程概述 Java虚拟机与程序的生命周期 一个运行时的Java虚拟机(JVM)负责运行一个Java程序. 当启动一个Java程序时,一个虚拟机实例诞生:当程序关闭退出,这 ...

  3. 重读《学习JavaScript数据结构与算法-第三版》-第2章 ECMAScript与TypeScript概述

    定场诗 八月中秋白露,路上行人凄凉: 小桥流水桂花香,日夜千思万想. 心中不得宁静,清早览罢文章, 十年寒苦在书房,方显才高志广. 前言 洛伊安妮·格罗纳女士所著的<学习JavaScript数据 ...

  4. 054 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 01 数组概述

    054 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 01 数组概述 本文知识点:数组概述 为什么要学习数组? 实际问题: 比如我们要对学生的成绩进行排序,一个班级 ...

  5. Java多线程| 01 | 线程概述

    Java多线程| 01 | 线程概述 线程相关概念 进程与线程 进程:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是操作系统进行资源分配与调度的基本单位.可以把进程简单的理解 ...

  6. Top-Down笔记 #01# 计算机网络概述

    因特网 网络核心 分组交换网中的时延.丢包和吞吐量 协议层次及其服务模型 面对攻击的网络 计算机网络和因特网的历史 小结(自己写的...) [什么是因特网?] 具体构成描述 1.与因特网相连的设备被称 ...

  7. ETCD快速入门-01 ETCD概述

    1.ETCD概述 1.1 ETCD概述     etcd是一个高可用的分布式的键值对存储系统,常用做配置共享和服务发现.由CoreOS公司发起的一个开源项目,受到ZooKeeper与doozer启发而 ...

  8. [01] MyBatis概述

    传统的JDBC来做DAO层,做了下面这几件事: 加载驱动 获取连接 执行SQL语句 获取操作结果封装信息 返回操作结果 而实际上DAO层最关心的是什么呢,就是后面三点就完事,JDBC显得太繁琐: 执行 ...

  9. 使用Axure RP原型设计实践01,使用概述

    首先认识Axure RP Pro 7.0软件的默认界面布局.最上面的是工具栏区域,左侧上方的是网站地图区域(sitemap),左侧中部的是部件区域(Widgets),左侧下方的是模板区域(Master ...

  10. plsql programming 01 plsql概述

    授权 从 oracle 8i 开始, oracle 用通过提供 authid 子句为 pl/sql 的执行授权模型, 这样我们可以选择使用 authid current_user(调用者权限)来执行这 ...

随机推荐

  1. POJ 2386 Lake Counting (简单深搜)

    Description Due to recent rains, water has pooled in various places in Farmer John's field, which is ...

  2. zabbix_server---微信报警

    (1)         企业应用-创建应用 1.除了对个人添加微信报警之外,还可以添加不同管理组,接受同一个应用推送的消息, 成员账号,组织部门ID,应用Agent ID,CorpID和Secret, ...

  3. MacOS下安装gdb、mgo

    安装gdb:http://blog.panks.me/posts/2013/11/install-gdb-on-os-x-mavericks-from-source/ 注意最后两步: killall ...

  4. mysql数据库密码更改

    先记下,随后继续更改! 方法1: 用SET PASSWORD命令 首先登录MySQL. mysql> set password for 用户名@localhost = password('新密码 ...

  5. python之----------字符编码具体原理

    1.内存和硬盘都是用来存储的. CPU:速度快 硬盘:永久保存 2.文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就可以启动一个进程,是在内存中的,所以在编辑器编 ...

  6. Python 序列的修改、散列和切片

    Vector类:用户定义的序列类型 我们将使用组合模式实现 Vector 类,而不使用继承.向量的分量存储在浮点数数组中,而且还将实现不可变扁平序列所需的方法. p.p1 { margin: 0.0p ...

  7. Akka(20): Stream:压力缓冲-Batching backpressure and buffering

    akka-stream原则上是一种推式(push-model)的数据流.push-model和pull-model的区别在于它们解决问题倾向性:push模式面向高效的数据流下游(fast-downst ...

  8. JAVA中反射机制一

    反射一 基本概念 一.反射机制的基本概念 什么是反射?反射是指在运行状态中,对于任意一个类,都可以获取到这个类的所有属性和方法:对于任意一个对象,都能够调用这个对象的任意方法和属性:这种动态获取信息及 ...

  9. 常见的Linux操作系统推荐

    常见的Linux操作系统推荐.. ---------------------- Ubuntu系统 这个系统又名乌班图系统,也是一个以桌面应用为主的Linux操作系统,系统分为云平台,服务器版和桌面版. ...

  10. 【JavaScript】Js控制页面所有元素只读

    在页面初始化加载以下readOnlyPage()方法,可实现所有元素只读,方便实用. <script language="javascript"> function r ...