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

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. 超简单的react和typescript和引入scss项目搭建流程

    1.首先我们先创建一个react项目,react官网也有react项目搭建的命令 npx create-react-app my-app cd my-app 2.安装我们项目需要的样式依赖,这个项目我 ...

  2. 老码农绝密:使用 TS(TypeScript) 的 10 大理由

    最近,小编读了一篇名为<放弃 TypeScript 的 7 个非常好的理由>,这篇文章的阅读量不低.里面有些观点确实有趣,不过在这里我要向你介绍使用 TypeScript 的 10 个理由 ...

  3. 设置WebStorm像VSCode一样每行代码结尾自动格式化加入“;”分号(JavaScript、TypeScript格式化)

    Ctrl+Shift+S→编辑器→Code Style→JavaScript或TypeScript→Punctuation 1.每行代码结尾自动加上;分号: Use(下拉框选Use)semiconlo ...

  4. 为TypeScript项目生成API文档

    为TypeScript项目生成文档 使用typedoc为TypeScript项目生成API文档. 1. 使用typedoc生成HTML文档 需要安装 typedoc. npm i typedoc 可以 ...

  5. TypeScript 1

    TypeScript 的由来 TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准. TypeScript 由微软开发的自由和开源的编程语言. TypeSc ...

  6. TypeScript学习笔记之 接口(Interface)

    在java中,接口是用来定义一些规范,使用这些接口,就必须实现接口中的方法,而且接口中的属性必须是常量. javascript中是没有接口的概念的.所以TypeScript在编译成 JavaScrip ...

  7. c# typescript_在任何IDE中从C#,Java或Python代码获取TypeScript接口的简单方法

    c# typescript by Leonardo Carreiro 莱昂纳多·卡雷罗(Leonardo Carreiro) 在任何IDE中从C#,Java或Python代码获取TypeScript接 ...

  8. 如何在React中使用Typescript

    TypeScript can be very helpful to React developers. TypeScript对React开发人员可能非常有帮助. In this video, Ben ...

  9. 使用Typescript的巧妙React上下文技巧-不是Redux

    by Bill Girten 比尔·吉尔滕(Bill Girten) 使用Typescript的巧妙React上下文技巧- 不是 Redux (Clever React context tricks ...

  10. 使用TypeScript映射和条件类型使React组件更出色

    by Deepu K Sasidharan 通过Deepu K Sasidharan 使用TypeScript映射和条件类型使React组件更出色 (Make your React component ...

最新文章

  1. mybatis与php,浅谈mybatis中的#和$的区别
  2. NBT:扩增子及其他测序的最小信息标准和测序规范(MIMARKS)
  3. 微软服务器sql server,解析:微软SQL Server 2008特性和功能
  4. 入手ipod touch4
  5. [ROS] Chinese MOOC || Chapter-2.4 Metapackage
  6. windows docker 卸载_安装Docker(Docker Toolbox)与Splash库
  7. 荣耀系统更新服务器不可用,荣耀确认系统更新方式 4月1日前发布的机型固件升级由华为负责...
  8. python 与或非_Python的阶乘求和
  9. 使用可自定义的定期计划自动执行数据库备份
  10. 《为iPad而设计:打造畅销App》——了解客户
  11. 强悍的命令行 —— 路径相关
  12. devexpress.xtraeditors.xtraform 类型初始值设定_远程智能电表的常见类型推荐--老王说表...
  13. 【IP 地址 和 端口 _简介】
  14. ASCII码判断大小
  15. PHP声音鉴定源码 微信趣味声音测试吸粉H5源码
  16. 个人时间和任务管理工具GTD大盘点!你适合哪一款?
  17. word2vec模型深度解析
  18. 智能不止联络,容联助力银行以服务创造价值
  19. 如何使用Etcd来完成选举
  20. codelite开发php,CodeLite环境搭建

热门文章

  1. python监视键盘_关于键盘监视的库pyHook与pythoncom
  2. java poi doc转docx_Java 插入Word分页符、分节符
  3. 两个列表合并去重_把两个pdf合并成一个如何解决?
  4. 白夜:一文看懂AI项目流程及边缘设备开发
  5. 图像滤波之高斯滤波介绍
  6. 009-mac下记事本工具 sublime text3
  7. Mac搭建Lua运行环境
  8. Android系统移植与驱动开发概述
  9. jvm Classload method介绍
  10. 实战:将企业域名解析委派给企业DNS服务器