TypeScript实战
上QQ阅读APP看书,第一时间看更新

2.2 认识TypeScript的简单语法

在介绍类型的时候会用一些代码来进行说明,就必然涉及一些TypeScript的编码规范和基本语法。因此在正式开始介绍TypeScript类型之前,本节有必要简要地介绍一下TypeScript的基本语法。

2.2.1 注释语法

为了提高代码的可读性,让其他人可以更好地理解某段代码的逻辑意图,必须在关键的地方对代码进行注释。在TypeScript语言中,注释方式主要有3种,分别是单行注释、多行注释以及用于生成API文档的注释。3种注释方式如下所示:

    01  //当行注释
    02  /*
    03    多行注释
    04    可以跨行进行注释
    05  */
    06  /**
    07   * API文档注释,可以供TypeDoc工具识别生成API说明文档
    08  */

可以看出,// ...表示单行注释,/* ... */用于多行注释,而/** ... */用于自动生成API说明文档的注释。API文档注释一般用于函数上,用来说明函数中参数的类型及参数的具体含义,同时说明函数的返回值。

通俗来讲,注释是给人阅读的,TypeScript编译器并不会去解析它。一般情况下,当脚本文件发布到生产环境下后,会利用工具对代码进行混淆和压缩,这个过程中就将注释进行了删除,从而减少文件大小,且增加了被阅读的难度。

2.2.2 区分大小写

TypeScript是区分大小写的,变量名someThing和something是不同的。因此在编码的时候一定要注意。

2.2.3 保留字

TypeScript中有很多内置的类型和对象等,从而占用了一些标识符,这些用于系统的特殊标识符为语言的保留字,不能用于变量的命名(标识符)。例如,下面的关键词是保留字,是不能用作标识符的:

下面的关键词不能用于用户定义的类型名称,这些是TypeScript内置的类型:

下面的关键词在特定上下文中有特殊意义,虽然是合法的标识符,但是为了防止歧义,不建议使用:

2.2.4 语句用;分隔

两个语句之间若处于同一行,中间必须用英文分号(;)进行分隔。每行末尾可以省略;但是不建议这样操作,因为在压缩代码的时候会压缩到一行上,这样没有分隔的两个语句可能会出现错误。

提示

TypeScript编译成JavaScript的时候会在没有分号的行末自动加上“;”。例如,“let b = 3”会编译为“var b = 3;”。

2.2.5 文件扩展名为.ts

TypeScript脚本文件的扩展名为.ts。

2.2.6 变量声明

TypeScript可以用let和var声明一个变量(变量的声明将在第3章详细介绍),声明变量的语法为:

    let或var  变量名 : 数据类型 = 初始化值 ;

例如:

    let varName : string = "hello  world" ;

提示

变量名必须遵循一定的命名规范,例如不允许用数字打头等。

2.2.7 异常处理

在TypeScript中,可以用throw关键字抛出一个异常。在JavaScript中,throw可以抛出任何类型的异常。但是在TypeScript中,throw抛出的必须是一个Error对象,如下所示。

    throw new Error("错误信息");

要自定义异常,可以继承Error类。当需要一个特定的异常行为或者希望catch块可以分辨异常类型时,自定义异常就会很有用。处理异常需要使用try ... catch语句块。大体上和C#的使用方法类似。下面的代码2-1给出一段try ... catch的示例代码,此代码并不具有什么实际意义,只是为了演示而已。

【代码2-1】try ... catch示例:try_catch.ts

    01  try {
    02      let a = b / 0; //  b 未定义
    03  }
    04  catch (error) {
    05      switch (error.name) {
    06          case 'errorOne': {
    07              console.log(error.message);
    08              break;
    09          }
    10          case 'errorTwo': {
    11              console.log(error.message);
    12              break;
    13          }
    14          default: {
    15              throw new Error("异常:"+error);
    16          }
    17      }
    18  }
    19  finally {
    20       console.log("执行结束");
    21  }

提示

TypeScript不支持多个catch块,只能在一个catch中通过switch来区分不同的异常类型,进而进行差异化处理。

在很多语言中,任何数值除以0都会导致错误而终止程序执行。但是在TypeScript(和JavaScript一致)中,会返回特殊的值,比0大的数除以0则会得到无穷大Infinity,而0/0则返回NaN,从而不会影响程序的执行。