为什么要用TypeScript

以下是本人的一点拙见,欢迎指正。

TypeScript的设计目的应该是解决JavaScript的“痛点”:弱类型和没有命名空间,导致很难模块化,不适合开发大型程序。另外它还提供了一些语法糖来帮助大家更方便地实践面向对象的编程。

那先来看看TypeScript是如何解决这两个问题的。

一. 编译时的强类型

TypeScript设计了一套类型机制来保证编译时的强类型判断。

最简单的,你可以申明变量的类型,那么任何其他类型的赋值将会引起编译错误。

例如

var foo: string;
foo = true; //error: Cannot convert 'boolean' to string

有意思的是,类似于C#的var变量声明,TypeScript会对赋值的变量进行类型推断

例如

var bar = 0;
bar = ''; //error: Cannot convert 'string' to 'number'

强类型还有一个最大好处就是智能提示,例如你可以知道当前变量具有哪些属性和方法

二. 模块化

利用TypeScript的关键词module,可以达到类似于命名空间的效果,而export可以控制是否被外部访问,举个例子

从这个例子可以看出module可以嵌套,访问时用'.'作分隔符,也可以用'.'作为分隔符来简写module的嵌套,只有带export关键词的才可以被外部访问,module可以合并,但是非export的对象在其他module下,即使是同一个名称,也不能被访问,如FuncA()。

其他的优点

容易上手

个人觉得TypeScript的一个设计亮点就是它并没有抛弃JavaScript的语法另起炉灶,而是做成了JavaScript的超集(这个功劳应该记在Anders上),这样任何合法的JavaScript的语句在TypeScript下都是合法的,也就是说学习成本很低,如果你对JavaScript有比较深入的了解,那么其实可以很快的上手TypeScript,因为它的设计都是针对JavaScript的使用习惯和惯例。

已有的类库可以很方便的使用

类似于C的头文件,TypeScript允许你定义一些声明,声明已有的变量和类型,那么你可以很方便的用强类型的方式去调用已有的类库。

语法糖

TypeScript可以实现类,接口,枚举,泛型,方法重载等,用简洁的语法丰富了JavaScript的使用。

为什么要用TypeScript - 肉猪 - 博客园相关推荐

  1. 改进博客园Markdown显示功能(加代码行号、显示代码所用编程语言)

    博客园的markdown模式下的代码高亮功能使用的是highlight.js,没有行号和显示相应编程语言的功能,只好自己将其改造了一下(将这两种功能一并实现了)~ 先看一下效果,再详细介绍方法~ 查看 ...

  2. 基于Cordova的博客园APP

           背景: 自从今年下半年接触一个基于ReactJS 的手机APP项目.开始了解到了Corodva这个神奇的东西.后续自己也自作了一些小的APP放到了应用宝上.8月份开始想做一个博客园APP ...

  3. 博客园在微信内置浏览器打开时添加微信赞赏码功能

    我的博客开通了赞赏,看右侧悬浮[打赏],很容易弄,文末有链接. 另外,在微信中打开时,博客正文底部增加微信赞赏码,在微信内置浏览器打开时,长按图片识别,直接可以赞赏. 这本人自己摸索的,未参考任何博文 ...

  4. 关于博客园与CSDN博客同步的说明

    把博客园与CSDN比较,我认为博客园有技术内容优势,CSDN有行业资源优势,两者都比较重要.因此在两家网站同步发布博客. CSDN博客地址:http://blog.csdn.net/caoshiyin ...

  5. Python爬虫入门教程 54-100 博客园等博客网站自动评论器

    爬虫背景 爬虫最核心的问题就是解决重复操作,当一件事情可以重复的进行的时候,就可以用爬虫来解决这个问题,今天要实现的一个基本需求是完成"博客园" 博客的自动评论,其实原理是非常简单 ...

  6. 博客园HTML源码运行特制js(原创自Zjmainstay)

    canrun 测试运行HTML <html> <head><title>测试博客园HTML源码运行程序</title><meta http-equ ...

  7. “北京今年入冬的第一场雪”,纪念博客园写日志一年了

    今天是2009年11月1日,北京下了入冬以来的第一场雪,就在昨天我还以为北京还是秋季,可是今天早上醒来看到外面飘落的大雪,已经意识到北京的冬天已经到来了 来博客园写博客一年了,结识了很多朋友,也为社区 ...

  8. 博客园今天早上是不是出现什么问题了?

    下面是我进我的blog后台管理和浏览博客园给出的提示.大约几分钟后恢复正常. 转载于:https://www.cnblogs.com/freeyzh/archive/2004/12/01/71269. ...

  9. Word 2013无法发布文章到博客园

    2018年12月12日突然发现word2013无法发布文章到博客园了, 虽然不常发布博客, 但作为一个强迫症患者, 不折腾好了, 吃肉都不香呀! 删除之前的账户, 想重新注册, 居然遇到了灰色对话框! ...

最新文章

  1. 3d查看器无法加载三维模型_珠峰登顶成功,送套三维模型给你
  2. 设置linux文件系统密码,busybox 文件系统设置 登陆 login 密码 password shadow
  3. c# 基本语法(转)
  4. 初探Openstack Neutron DVR
  5. leetcode 153. 寻找旋转排序数组中的最小值(Find Minimum in Rotated Sorted Array)
  6. 单片机控制步进电机程序c语言正反转停止,51单片机控制步进电机的启动、停止、正转、反转...
  7. 【Chapter 1】什么是软件架构
  8. 去除控制台的Vue warn警告信息
  9. ReactiveCocoa简介翻译
  10. python密码安全性检查代码
  11. 整理了一下以前写的东西,单条记载 现在看看还蛮有意思
  12. 精美素材:10套最新出炉的免费扁平图标下载
  13. 微信如何根据经纬度坐标查询具体地理位置
  14. win10 远程桌面卡顿_win10远程桌面连接卡如何解决_windows10远程连接桌面很卡怎么处理...
  15. 年轻人宣言:青春符号
  16. 《Microduino实战》——3.7 光敏电阻
  17. 二元logistics回归
  18. python小程序短信发送助手
  19. 云计算期末考试知识点
  20. linux挂载实验箱闹钟,Linux/Ubuntu命令行下打造一个音乐闹钟

热门文章

  1. java rc4_nodejs 和 java 进行 rc4 加密得到的结果不一样
  2. java servlet深入理解_java 步步惊心 (web ) 深入理解servlet
  3. 计算机用户的注册表,计算机上的注册表在哪里
  4. 【caffe-Windows】mnist实例编译之model的使用-matlab
  5. iOS中POST请求
  6. 设计模式(六)------设计模式六大原则(5):迪米特法则
  7. xxx征集系统项目目标文档
  8. MyBatis中if,where,set标签
  9. [转载]MATLAB movie 函数动态绘图
  10. HNU 11720 God Created The Integers