基础类型
let str:string = 'test'
let num:number = 12345
let bool:boolean = false
let und:undefined = undefined
let abc: string | number | boolean = false
//大写的类型名可以接受对象
let str2:String = new String('test2)
数组和对象
//数字数组类型
let arr1:number[] = [12]
//元组类型
let arr2:[number, string, number?] = [12, 'ab'] //第三项为可选
let arr3:[number,string,...(number|string)[]] = [2, 'a', 3, 'b'] //第1项为数字、第2项为字符串,其它为数字或字符串类型
let obj:{} = {a: 123, c: 23} //空对象类型,代表对象无限制
let obj2:{a:number,b:string,c?:number} = {a: 2, b: 'b2'} //指定固定的属性
let obj3:{[propsName:number]:string} = {1: 'a', 22: 'bb'} //指定属性key的类型,这种不限制属性数量
函数
//直接定义一个函数的参数和返回
function f1(a:string):string {}
//定义一个函数变量
let f2:(a:string) => string = function(a:string):string {
return 123
}
function f3(a:boolean, b?:number,...args:(number|string)[]):(number|string) {
console.log('args', args)
return args
}
//第1个参数为布尔,第2个为可选的数字,其它的为数字或字符串
f3(false, 2, 'a', 3, 4, 'c')
//函数参数默认值和可选
function f4(a=false, b?:number): number {
if (a) {
return 1
} else {
return b || 0
}
}
f4() //输出:0
f4(false, 12) //输出:12
类
class TsClass {
public pub = 123
static sta = 345
readonly rea = 567
protected pro = 789
private pri() {
//内部才可以读取保护的属性
console.log(this.pro)
}
}
new TsClass().pub = 234
new TsClass().pro = 890 //保护的属性,外部调取会报错
特殊类型和高级类型
//unknown和any类型都可以分配任何值
//unkown相当于更安全的any,unkown
let value:unknown = {}
let value2:any = 123
//any可以分配给其它类型
let value3:string = value2
//unknow不能分配给其它类型,只能分配给unkown
let value4:string = value //报错
接口与type
泛型和断言
ts的类型推导机制
枚举和symbol
工程化编译与tsconfig全
Vue2,Vue3,React实战TS