环境
本地安装ts
npm i typescript -D
查看版本
npx tsc -v
编译ts
npx tsc index.ts
监听文件变化,自动编译
npx tsc index.ts -w
类型推断
声明变量时可以不指定类型,ts会根据初始值自动推断类型
let name = 'Bob' // 自动推断 name: string
const arr = [1, 'abc'] // 自动推断 arr: (number | string)[]
创建配置文件
npx tsc --init // 会创建tsconfig.json
类型
any和unknown
any: 不限定任何类型,ts将不进行类型检查。
unknown:该变量有类型,但不知道其类型。
可以将类型“any”分配给其他类型。不能将类型“unknown”分配给其他类型。
unknown可以作为as断言的中间类型:
let name: string = 'Bob'
let a: number = name as unkonwn as number
// let a: number = name as number 会报错
void 和 never
void :函数返回undefined
never:函数不会执行到底,比如抛错会中断函数,这种情况用never
null 和 undefined
type
tuple
数组只能设置成员类型,不能限制某个位置的类型
let arr: (string|number|boolean)[]
tuple用于限定数组各个位置的类型
let t: [string, number, boolean]
// 只有['asd', 123, false]这种特定位置类型的数组符合
enum
enum Gender {
MALE,
FEMALE
}
as 断言
let name: string = 'Bob' // 宽泛类型
const age = 18 // 值类型,不能变更
as const
可以将宽泛类型转换为值类型
let name: string = 'Bob' as const
// 等效于
const name = 'Bob'
// 数组转换为元组
const arr = ['asd', 18, true] as const
非空断言
const el: HTMLDivElement = document.querySelector("#app") as HTMLDivElement
或者
const el: HTMLDivElement = document.querySelector("#app")!