安装typescript
// 全局安装typescript
npm install -g typescript
// 运行
tsc ts文件
tsc ts文件 -w 持续运行
设置ts配置文件
这里只有部分配置,其它可以自己看看官网
// 生成tsconfig.json文件
tsc --init
// 设置转换的js文件输出目录
"outDir": "./dist", // 默认是./ 我现在设置在当前目录dist文件夹下
注意上面修改后要输入tsc全局执行一下才行
// 设置转换后js代码风格 默认是commonjs
"module": "ES6",
类型注解和类型推断
// 这里规定了a必须是字符串
let a:string = "123"
a = 123 //这里会报错
let b = 321 // 在vscode中鼠标悬浮会自动进行类型推断
类型分类
基本类型
string、number、boolean、null、undefined、symbol、bigint
对象类型(object)
[] {} function(){}
Ts新增类型
any never void unknown enum
let s:string = "abc";
let c:object = []
// 联合类型
let a:string | number;
a = 123
a = "abc"
// 交叉类型(一般用在对象类型中)
type A ={
username:string
}
type B ={
age:20
}
let a:A&B = {username:'123',age:20}
never类型与any类型与unknown类型
// never:一般用来做校验
// 这个就会提示,不能将类型“number”分配给类型“never”
let a:string & number = 123
// 作用
function foo(n: 1 | 2 | 3) { //这里表示n只能是1或2或3
switch (n) {
case 1:
break
case 2:
break
default:
// 检测n是否可以走到这里,查看所有值是否被使用
let m: never = n
}
}
// any:任意类型 与js相同
let b: any = 123
b.map(()=>{}) //不检测
// unknown类型
let arr: unknown = 'hello'
// any类型不进行检测,unknown使用ts会检测
// arr.map(() => {}) 会被检测
类型断言与非空断言
// unknown类型
let arr: unknown = 'hello'
// arr.map会被断言报错,类型断言是为了让它通过编译阶段
(arr as []).map(() => {})
let b: string | undefined = undefined
// b.length 报错提示b是未定义
b!.length // 非空断言告诉只能是字符串