TypeScript的好处

JS的缺点

  • ES5之前使用var关键字作用域问题
  • JS没有加入类型检测机制
  • JS的数组类型不是连续的内存空间

TS的特点

始于JavaScript,归于JavaScript

  • TypeScript从今天数以百万计的JavaScript开发者所熟悉的语法和语义开始。使用现有的JavaScript代码,包括流行的JavaScript库,并从JavaScript代码中调用TypeScript代码。
  • TypeScript可以编译出纯净、 简洁的JavaScript代码,并且可以运行在任何浏览器上、Node.js环境中和任何支持ECMAScript 3(或更高版本)的JavaScript引擎中。

TypeScript是一个强大的工具,用于构建大型项目

  • 类型允许JavaScript开发者在开发JavaScript应用程序时使用高效的开发工具和常用操作比如静态检查和代码重构。
  • 类型是可选的,类型推断让一些类型的注释使你的代码的静态验证有很大的不同。类型让你定义软件组件之间的接口和洞察现有JavaScript库的行为。

拥有先进的 JavaScript

  • TypeScript提供最新的和不断发展的JavaScript特性,包括那些来自2015年的ECMAScript和未来的提案中的特性,比如异步功能和Decorators,以帮助建立健壮的组件。
  • 这些特性为高可信应用程序开发时是可用的,但是会被编译成简洁的ECMAScript3(或更新版本)的JavaScript。

TypeScript的使用

变量声明方式

  • var/let/const 标识符:数据类型=赋值
    <!--hexoPostRenderEscape:<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">* TS中不建议使用var关键字 </span><br><span class="line"></span><br><span class="line">### TypeScript数据类型</span><br><span class="line"></span><br><span class="line">* enum类型</span><br><span class="line"></span><br><span class="line">  * 枚举类型通常是定义一组数据:</span><br><span class="line"></span><br><span class="line">  * 枚举类型有自己的值</span><br><span class="line"></span><br><span class="line">    * 默认情况下 枚举类型中数据是从0开始,我们可改变他的初始化值</span><br><span class="line"></span><br><span class="line">    * 也可以通过对应的值获取对应的数据名称</span><br><span class="line"></span><br><span class="line">    * &#96;&#96;&#96;javascript</span><br><span class="line">      enum Direction&#123;</span><br><span class="line">      East:10,   &#x2F;&#x2F;初始是0</span><br><span class="line">      West:11, &#x2F;&#x2F;初始是1</span><br><span class="line">      North:12,&#x2F;&#x2F;初始是2</span><br><span class="line">      South:13&#x2F;&#x2F;初始是3</span><br><span class="line">      &#125;</span><br><span class="line">      const d1 &#x3D; Direction.EAST;</span><br><span class="line">      const d2 &#x3D; Direction.NORTH;</span><br><span class="line">      </span><br><span class="line">      console.log(d1); &#x2F;&#x2F; 10</span><br><span class="line">      console.log(d2); &#x2F;&#x2F; 30</span><br><span class="line">      </span><br><span class="line">      console.log(Direction[11]); &#x2F;&#x2F; West</span><br><span class="line">      console.log(Direction[12]); &#x2F;&#x2F; North</span><br></pre></td></tr></table></figure>:hexoPostRenderEscape-->
  • tuple类型

    • tuple是元组类型

    • const Info:[string,number,number]=['hyp',18,1.1]
  • any类型

    • 在某些情况下,我们确实无法确定一个变量的类型,并且可能它会发生一些变化,这个时候我们可以使用any类型(类似于Dart语言中的dynamic类型)
  • void类型

    • 如果一个函数没有返回值,那么它的返回值类型就是void
  • never类型

    • never类型表示一种从来不会存在的值的类型,有点绕,我们来这样理解:
      • 如果一个函数中是一个死循环,那么这个函数会返回东西吗?不会,那么写void类型或者其他类型作为返回值类型都不合适,我们就可以使用never类型。
      • 如果一个函数是抛出一个异常,那么这个函数是不是也没有返回值呢?这个时候我们也可以使用never类型。

接口interface

  • 因为JavaScript是弱类型的语言,所以并不会对我们传入的代码进行任何的检测
  • TypeScript重构代码