前期准备
开发环境搭建: node.js
全局安装 typescript:npm i -g typescript
编译命令:
1、自动编译当个文件: tsc xxx.ts 或 tsc xxx.ts -w
2、自动编译整个项目: tsc 或 tsc -w
直接使用 tsc 的前提是在项目根目录下创建一个 ts 的配置文件 tsconfig.josn
tsconfig.json 是 ts 编译器的配置文件,ts 编译器可以根据它的信息来对代码进行编译
类型声明
1、字面量
let a:number; a = 10;
let b: 10 // 注意此处 b 不可再赋其他值:b = 11 报错;b = 10 正常
2、联合类型 - 使用 | 来连接多个类型
let c: boolean | string
c = true;
c = 'hello';
c = 1 ; // 报错
3、any 任意类型 - 可以随意赋值
相当关闭了类型检测功能(不推荐使用)
let d: any
d = 1;
d = 'hello';
d = true;
注意如果不指定类型,则TS解析器会自动判断变量类型为 any (隐式)
let e; // e 的类型为 any
e = 10;
e = 'hello';
4、unknown 未知安全类型的值 - 可以随意赋值
let f: unknown
f = 1;
f = true;
f = 'hello';
注意unknown 和 any 的区别:any 可以赋值给任意变量,不会报错,unknown 不能直接赋值给其他变量会报错
let d: any; d = 1;
let f: unknown; f = 'hello';
let g: string;
g = d; // 不报错
g = f; // 报错
5、类型断言
告诉解析器变量的实际类型,语法:
变量名 as 类型
<类型>变量名
let f: unknown; f = 'hello';
let g: string;
g = f as string;
g = <string>f;
6、void 用来表示空,以函数为例,就表示没有返回的函数
function fn(): void {
} // 直接省略 return
function fn2(): void {
return
} // return 不能带值,不然会报错
7、never 表示永远不会返回结果
function fnNo(): never{
throw new Error('报错了')
}
8、{} 用来指定对象
因为 对象、function 都是object,所以用 {} 来指定对中可以包含哪些属性
语法: {属性名: 属性值类型… }
- 传参类型结构需一致
let obj: {
name: string, age: number};
obj = {
name: "花姐", age: 4};
obj = {
name: "橘宝"}; // 缺少 age 会报错
- 属性名 ?,实现参数可选
let newObj: {
name: string, age?: number}
newObj = {
name: "花姐", age: 4}
newObj = {
name: "花姐"} // 不报错
- [propName: string]: any 实现参数数量、类型 可选
// [propName: string] 表示任意字符串的键名;[propName: string]: any 表示任意类型的属性
let propObj: {
name: string, [propName: string]: any}
propObj = {
name: '花姐'}
propObj = {
name: '橘宝', age: 2, gender: '男'}
9、数组
- 类型[]
let str: string[];
str = ['a', 'b'];
str = [1, 2]; // 报错
- Array[类型]
let strA: Array<number>;
strA = ['a', 'b']; // 报错
strA = [1,2,3];
10、元组,固定长度的数组
语法:[类型、类型…]
let YZ:[string, number];
YZ = ['12', 2];
YZ = ['12', 2, 123]; // 报错
11、枚举
enum Color {
Red, Green, Blue}
let colorName: string = Color[2];
alert(colorName); // Green
12、设置函数结构的类型声明
let fns:(x: number, y: number) => number
fns = function(x, y){
return x + y
}
13、类
- 类中主要两个部分:属性、方法