- TypeScript实战
- 汪明
- 1294字
- 2021-04-03 19:56:01
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,从而不会影响程序的执行。