1、TypeScript 是一种给 JavaScript 添加特性的语言扩展。增加的功能包括:
类型批注和编译时类型检查
类型推断
类型擦除
接口
枚举
Mixin
泛型编程
名字空间
元组
Await
以下功能是从 ECMA 2015 反向移植而来:
类
模块
lambda 函数的箭头语法
可选参数以及默认参数
2、JavaScript 与 TypeScript 的区别
a. TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法,因此现有的 JavaScript 代码可与 TypeScript 一起工作无需任何修改,TypeScript 通过类型注解提供编译时的静态类型检查。
b.TypeScript 可处理已有的 JavaScript 代码,并只对其中的 TypeScript 代码进行编译
TypeScript 安装 npm install -g typescript
查看版本号: $ tsc -v Version 3.2.2
npm工具 使用国内镜像:npm config set registry https://registry.npm.taobao.org
通常我们使用 .ts 作为 TypeScript 代码文件的扩展名。
然后执行以下命令将 TypeScript 转换为 JavaScript 代码: tsc app.ts
我们可以同时编译多个 ts 文件:tsc file1.ts file2.ts file3.ts
1、TypeScript 基础语法
TypeScript 程序由以下几个部分组成:
模块
函数
变量
语句和表达式
注释
单行注释 ( // ) − 在 // 后面的文字都是注释内容。
多行注释 (/* */) − 这种注释可以跨越多行。
2、TypeScript 基础类型
任意类型 any
声明为 any 的变量可以赋予任意类型的值。
数字类型 number
双精度 64 位浮点值。它可以用来表示整数和分数。
let binaryLiteral: number = 0b1010; // 二进制
let octalLiteral: number = 0o744; // 八进制
let decLiteral: number = 6; // 十进制
let hexLiteral: number = 0xf00d; // 十六进制
字符串类型 string
一个字符系列,使用单引号(')或双引号(")来表示字符串类型。反引号(`)来定义多行文本和内嵌表达式。
let name: string = "Runoob";
let years: number = 5;
let words: string = `您好,今年是 ${ name } 发布 ${ years + 1} 周年`;
布尔类型 boolean
表示逻辑值:true 和 false。
let flag: boolean = true;
数组类型 无
声明变量为数组。
// 在元素类型后面加上[]
let arr: number[] = [1, 2];
// 或者使用数组泛型
let arr: Array<number> = [1, 2];
元组 无
元组类型用来表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同。
let x: [string, number];
x = ['Runoob', 1]; // 运行正常
x = [1, 'Runoob']; // 报错
console.log(x[0]); // 输出 Runoob
枚举 enum
枚举类型用于定义数值集合。
enum Color {Red, Green, Blue};
let c: Color = Color.Blue;
console.log(c); // 输出 2
void void
用于标识方法返回值的类型,表示该方法没有返回值。
function hello(): void {
alert("Hello Runoob");
}
null null 表示对象值缺失。
undefined undefined 用于初始化变量为一个未定义的值
never never never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值。
注意:TypeScript 和 JavaScript 没有整数类型。
3、TypeScript 变量声明
TypeScript 变量的命名规则:
变量名称可以包含数字和字母。
除了下划线 _ 和美元 $ 符号外,不能包含其他特殊字符,包括空格。
变量名不能以数字开头。
变量使用前必须先声明,我们可以使用 var 来声明变量。
变量作用域
变量作用域指定了变量定义的位置。程序中变量的可用性由变量作用域决定。
TypeScript 有以下几种作用域:
全局作用域 − 全局变量定义在程序结构的外部,它可以在你代码的任何位置使用。
类作用域 − 这个变量也可以称为 字段。类变量声明在一个类里头,但在类的方法外面。 该变量可以通过类的对象来访问。类变量也可以是静态的,静态的变量可以通过类名直接访问。
局部作用域 − 局部变量,局部变量只能在声明它的一个代码块(如:方法)中使用。
4、TypeScript 运算符
TypeScript 主要包含以下几种运算:
算术运算符 + - * / % ++ --
逻辑运算符 && || !
关系运算符 == != > < >= <=
按位运算符
赋值运算符 = += -= *= /=
三元/条件运算符 ?
字符串运算符 连接运算符 (+)
负号运算符(-)
类型运算符 typeof instanceof 运算符用于判断对象是否为指定的类型
5、TypeScript 条件语句
if...else 语句
if...else if....else 语句
switch…case 语句
var grade:string = "A";
switch(grade) {
case "A": {
console.log("优");
break;
}
default: {
console.log("非法输入");
break;
}
}
6、循环
7、TypeScript 函数
函数是一组一起执行一个任务的语句。
函数定义 函数就是包裹在花括号中的代码块,前面使用了关键词 function
可选参数 在 TypeScript 函数里,如果我们定义了参数,则我们必须传入这些参数,除非将这些参数设置为可选,可选参数使用问号标识 ?。可选参数必须跟在必需参数后面。
注意:参数不能同时设置为可选和默认。
剩余参数 有一种情况,我们不知道要向函数传入多少个参数,这时候我们就可以使用剩余参数来定义。
剩余参数语法允许我们将一个不确定数量的参数作为一个数组传入。