目录
01 ts 相关指令
全局安装 typescript 模块
npm i -g typescript
安装完成之后 可以将ts文件转换成js文件
tsc xxx.ts
如果想要对转换的js文件进行实时转换 需要添加一个-w 参数
tsc xxx.ts -w
ts 是默认全局环境下的,所以和其他文件夹中内容由同名变量会冲突
需要把ts文件编程一个模块化的文件 那么变量就只能在这个模块中起作用就不会冲突
export { } //导出一个对象
如果不想采用默认的编译方式 可以通过修改配置文件的方式改变一些默认设置
配置文件叫做 tsconfig.json
通过 tsc --init 可以自动创建tsconfig.json文件
02 类型声明空间与变量声明空间
js中只有变量声明空间
但ts中不仅存在变量声明空间 还存在类型声明空间
let a="hello" //这是变量声明空间
type A =string //这是类型声明空间 一般使用大写
不能将这两个空间混合编写
例如: type A=number ; let a =A //这样是不可以的
特殊情况:
类在ts中即是变量声明空间,也是类型声明空间
例: class Foo{}
let a=Foo;
type A=Foo;
03 类型注解和类型推断
将变量声明空间和类型声明空间联系到一起 需要通过类型注解来实现
类型注解:
通过将变量声明空间和类型声明空间结合到一起的操作就叫做类型注解
具体的语法就是通过冒号连接在一起
let a : string = "helllo"
let A = string
let a : A = "hello"
类型推断: ts 自动完成的类型注解的过程
ts会强制类型 进行自动的类型判断就叫做类型推断
04 类型分类 , 联合类型与交叉类型
类型分为: 基本类型 , 对象类型 , ts新增类型
基本类型: string number boolean null undefined symbol bigint
对象类型: 数组[ ] 对象{ } 函数 function( ){ }
ts新增类型: any never void unknown enum
联合类型:
类型之间进行或的操作
let a : string | number | boolean ="hello"
交叉类型:
类型之间进行与的操作
交叉类型很少是基本类型 大多都是对象类型
05 never类型 any类型 和unknown类型
never类型:
never类型表示不存在的值的类型
当一个值不存在的时候就会被自动类型推断成never类型
let a:number&string=123
以上代码报错
自动推断出来a时候nver类型 这种写法123不可能即是number又是string
这个never类型都是自动推断出来的
利用never类型可以实现判断参数是否都被使用
any类型:
any类型表示任意类型
unknown类型表示的是未知类型 是any类型对应的安全类型
any表示任意类型 那么定义的变量可以随意修改它的类型 这样有问题
设置为any类型之后 就是ts不再进行类型强制 和js没有区别了
所以any类型相当于是ts中的后门 不到万不得已不要使用 如果真的有这种需求
可以采用any类型对应的unknown类型类定义
any类型不进行任何检测 但是unknown使用的时候ts默认会进行检测
unknown 类型让程序使用的时候更严谨
我们使用ts的时候最好主动告诉ts这是一个什么类型