TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准。
执行步骤
创建原始xx.ts文件
使用tsc xx.ts执行文件生成xx.js文件
使用node xx.js命令执行js文件
- TS由模块 函数 变量 语句和表达式 注释 组成
变量
- 变量是一种使用方便的占位符,用于引用计算机内存地址。我们可以把变量看做存储数据的容器。
- var [变量名] : [类型] = 值;
函数
function function_name(param1 [:datatype], ( param2 [:datatype])):return_type
{
// 执行代码
}
对象
-
Number
属性 MAX_VALUE MIN_VALUE NaN NEGATIVE/POSTIVE_INFINITY prototype(静态属性) [使用方式比较奇特] constructor:返回对创建此对象的 Number 函数的引用。
方法
toExponential()把对象的值转换为指数计数法。
toFixed()把数字转换为字符串,并对小数点指定位数。
toLocaleString()把数字转换为字符串,使用本地数字格式顺序。
toPrecision()把数字格式化为指定的长度。
toString()把数字转换为字符串,使用指定的基数。数字的基数是 2 ~ 36 之间的整数。若省略该参数,则使用基数 10。
valueOf()返回一个 Number 对象的原始数字值。
-
String对象
属性 constructor:对创建该对象的函数的引用。 length:返回字符串的长度。 prototype:允许您向对象添加属性和方法。
方法
charAt():返回在指定位置的字符。
charCodeAt():返回在指定的位置的字符的 Unicode 编码。
concat():连接两个或更多字符串,并返回新的字符串。
indexOf():回某个指定的字符串值在字符串中首次出现的位置。
astIndexOf():从后向前搜索字符串,并从起始位置(0)开始计算返回字符串最后出现的位置。
localeCompare()用本地特定的顺序来比较两个字符串。
match()查找找到一个或多个正则表达式的匹配。
replace()替换与正则表达式匹配的子串
search()检索与正则表达式相匹配的值
slice()提取字符串的片断,并在新的字符串中返回被提取的部分。
split()把字符串分割为子字符串数组。
substr()从起始索引号提取字符串中指定数目的字符。
substring()提取字符串中两个指定的索引号之间的字符。
toLocaleLowerCase()根据主机的语言环境把字符串转换为小写,只有几种语言(如土耳其语)具有地方特有的大小写映射。
toLocaleUpperCase()据主机的语言环境把字符串转换为大写,只有几种语言(如土耳其语)具有地方特有的大小写映射。
toLowerCase()字符串转换为小写。
toString()返回字符串。
toUpperCase()把字符串转换为大写。
valueOf()返回指定字符串对象的原始值。
- Array数组对象
-
定义
var array_name[:datatype]; //声明 array_name = [val1,val2,valn..] //初始化 var array_name[:data type] = [val1,val2…valn] 使用 Array 对象创建数组。array 对象的构造函数接受以下两种值: 表示数组大小的数值。var arr_names:number[] = new Array(4) 初始化的数组列表,元素使用逗号分隔值。var sites:string[] = new Array("Google","Runoob","Taobao","Facebook") 多维数组:var arr_name:datatype[][]=[ [val1,val2,val3],[v1,v2,v3] ]
-
功能
数组解构:把数组元素赋值给变量
var arr = [12, 13];
var x = arr[0], y = arr[1]; // 将数组的两个元素赋值给变量 x 和 y
数组迭代:就是遍历数组元素
方法
concat()连接两个或更多的数组,并返回结果。
every()检测数值元素的每个元素是否都符合条件。
filter()检测数值元素,并返回符合条件所有元素的数组。
forEach()数组每个元素都执行一次回调函数。
indexOf()搜索数组中的元素,并返回它所在的位置。
join()把数组的所有元素放入一个字符串。
lastIndexOf()返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
map()通过指定函数处理数组的每个元素,并返回处理后的数组。
pop()删除数组的最后一个元素并返回删除的元素。
push()向数组的末尾添加一个或更多元素,并返回新的长度。
reduce()将数组元素计算为一个值(从左到右)。
reduceRight()将数组元素计算为一个值(从右到左)。
reverse()反转数组的元素顺序。
shift()删除并返回数组的第一个元素。
slice()选取数组的的一部分,并返回一个新数组
some()检测数组元素中是否有元素符合指定条件。
sort()对数组的元素进行排序。
splice()从数组中添加或删除元素。
toString()把数组转换为字符串,并返回结果。
unshift()向数组的开头添加一个或更多元素,并返回新的长度。
-
元组
var tuple_name = [value1,value2,value3,…value n] push() 向元组添加元素,添加在最后面。 pop() 从元组中移除元素(最后一个),并返回移除的元素。 解构元组:我们也可以把元组元素赋值给变量,var a=["name",12],var [x,y]=a
-
联合类型
联合类型(Union Types)可以通过管道(|)将变量设置多种类型,赋值时可以根据设置的类型来赋值。Type1|Type2|Type3
-
接口
-
接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法。
interface interface_name { } -
例如定义了一个接口 IPerson,接着定义了一个变量 customer,它的类型是 IPerson。customer 实现了接口 IPerson 的属性和方法。
-
接口继承 关键字:extend
Child_interface_name extends super_interface1_name, super_interface2_name,…,super_interfaceN
-
-
类
class class_name { // 类作用域 }
与c++一样,数据成员具有字段 属性 方法 构造函数,同样使用new关键字进行类的实例化。也支持继承,不能继承父类的私有属性与方法以及构造函数。
static 关键字:static 关键字用于定义类的数据成员(属性和方法)为静态的,静态成员可以直接通过类名调用。 -
类和接口
- 类可以实现接口,使用关键字 implements,并将 interest 字段作为类的属性使用。
-
鸭子类型(Duck Typing)[多态]
-
命名空间
- 如果我们需要在外部可以调用命名空间中的类和接口,在类和接口添加 export 关键字。
- 如果一个命名空间在一个单独的 TypeScript 文件中,则应使用三斜杠 /// 引用它
- 模块
模块使用模块加载器去导入其它的模块。 在运行时,模块加载器的作用是在执行此模块代码前去查找并执行这个模块的所有依赖。 大家最熟知的JavaScript模块加载器是服务于 Node.js 的 CommonJS 和服务于 Web 应用的 Require.js。
- 模块导出使用关键字 export 关键字,导入模块需要使用import关键字
- 声明文件
有时需要使用其他的js库,但是这些库与ts的特性不兼容,所以就需要将这些库里的函数和方法体去掉后只保留导出类型声明,而产生了一个描述 JavaScript 库和模块信息的声明文件。通过引用这个声明文件,就可以借用 TypeScript 的各种特性来使用库文件了。
declare 关键字来定义它的类型
声明文件以 .d.ts 为后缀
TypeScript 引入声明文件语法格式:/// <reference path = " runoob.d.ts" />
新增
-
类型断言(Type Assertion)类型断言可以用来手动指定一个值的类型,即允许变量从一种类型更改为另一种类型。语法格式:
-
除了全局以及局部的作用域 新增了类作用域
-
instanceof 运算符:用于判断对象是否为指定的类型
-
for…of 、forEach、every 和 some 循环
-
可选参数,可选参数使用问号标识 ? 可选参数必须跟在必需参数后面。
function buildName(firstName: string, lastName?: string)
-
默认参数 function function_name(param1[:type],param2[:type] = default_value) 也就是定义的时候赋初值
-
剩余参数:我们不知道要向函数传入多少个参数,这时候我们就可以使用剩余参数来定义。
剩余参数语法允许我们将一个不确定数量的参数作为一个数组传入。 函数的最后一个命名参数 restOfName 以 ... 为前缀,它将成为一个由剩余参数组成的数组,索引值从0(包括)到 restOfName.length(不包括) 标志就是...restOfName
-
Lambda 函数(箭头函数):( [param1, parma2,…param n] )=>statement;
-
函数重载:如果参数类型不同,则参数类型应设置为 any。参数数量不同你可以将不同的参数设置为可选。