TypeScript学习
---- TypeScript 由微软公司开发 支持JS的平台都可以使用TS 但是TS不能被直接解析
相较于JS TS是强类型语言
---- TypeScript 增加了什么
1/. 类型
2/.支持ES的新特性
3/.ES不具备的新特性
4/.丰富的配置选项
5/.强大的开发工具
---- TypeScript开发环境搭建
1/.下载node.js (TS解析器由node写的)
2/.安装node.js
3/.使用 npm 全局安装 TypeScript
npm i -g typescript
4/.创建一个ts文件
5/.使用tsc对文件进行编译
进入命令行
进入ts文件夹所在目录
执行命令 tsc xxx.ts
---- TS编写变量要带类型
例如: let a:number = 10; let b:boolean = true;
----TS的基本数据类型
any: 任意类型 生命为any的变量可以赋予任意类型额的值
number: 数字类型
string: 字符串类型 可用单引号 ' 或双引号 " 来表示字符串类型 反引号 `来定义多行文本和内嵌表达式
boolean: 布尔值类型 true/false
Array: 数组类型 string[] number[] / Array<string> Array<number> 表示是什么样类型的数组
Tuple: 元组 按照数据类型要求即可 let a : [string, number] a = ['123',456] √ a= [123,'456'] ×
enum: 枚举 例如:enum Color { Red = 1, Blue=2, Green =3} let x: Color = Color.Blue x === Color.Blue // true
void: 没有任何类型 表示没有返回值
unkonwn: 类型安全的any 一般设置为unknown 不设置为any
never: 表示永不存在的值
object: 对象类型
----类型断言
告知解析器变量的实际类型
x = <string>a 或者 x = a as string 将类型为字符串的a 赋值给 x
----TS可以使用 | 来连接多个类型
例如: let a : "man" | "woman" a为 man或者 woman时不会报错 但是别的依旧会报错
再比如: let b: string | number b为 字符串类型 或数字类型 不会报错 否则报错
----编译选项
tsc xxx.ts -w 启动监视模式 代码发生变化就会自动编译 ctrl + c 取消 这样一个文件就需要开启一次 比较麻烦
创建配置文件 tsconfig.json 然后执行 tsc 就会编译所有的ts文件了、
----编译配置文件 tsconfig.json
--“include” 用来指定哪些文件需要被编译
路径: ** 表示任意目录 * 表示任意文件
例如 "./src/**/*" 指src文件夹下所有文件夹所有文件
--“exclude” 用来指定哪些文件不被编译
默认值 ["node_modules"],["bowewr_components"],["jspm_packages"]
--"extends" 定义被继承的配置文件
类似于引入其他文件
--"files" 直接指定编译文件的列表
例如 "files":["lesson1.ts","lesson2.ts","lesson3.ts"]
--"compilerOptions" 编译器选项
"target" : "ES5" 用来指定ts编译为的ES的版本
可选项 es5 es6 es2015 es2016 es2017 es2018 es2019 es2020
"module": "es2015 " 指定要使用的模块化规范
可选项 none commonjs amd system umd es6 es2015 es2020 esnext
"lib": [] 用来指定项目中要使用的库 一般情况下不动
"outDir" : "./dist" 用来指定编译后的输出路径
"outFile" : "" 将代码合并成一个文件并指定输出路径
"allowJs": true 是否编译JS文件 默认是 false
"checkJs": true 是否检查JS语法 默认是 false
"removeComments" : true 是否移除注释
"noEmit" : true 不生成编译后的文件
"noEmitOnError" : true 当有错误时不生成编译文件
"alwaysStrict" : false 编译后的文件是否使用严格模式 默认false
"noImoliciAny" : true 不允许隐式的any类型
"noImoliciThis" : true 不允许不明类型的this
"stricNullChecks" : flase 严格的检查空值 有空值时会报错 例如获取不到元素之类的
----抽象类
----接口
----修饰符
public 公有(默认值) 任何人都可以修改 子类也可以使用
private 私有 只能在类的内部修改 不能用实例修改
protected 受保护的属性 只能在当前类和当前类的子类中使用 这个也只能在类中修改