// 类型推论1:ts支持,鼠标放上去自行显示类型,这种可以省略写出类型
let num = 12
// 类型推论2:没有赋值的情况下
let str // 类型为any
str = 123
str = '123'
2、类型别名(使用type关键字定义)
type s = string
let str1: s = 'huangzi'
// 支持联合类型
type sn = string | number
let sn1: sn = 77
// 定义函数
type fn = (name: string) => void
// 定义对象
type obj = { id: string }
// 定义数组
type arr = number[]
3、type与interface区别
// 1、interface:A可以使用extends去继承B;type:只能使用交叉类型&
type obj1 = string & B
interface A extends B {
name: string | null // 在属性上可以写联合类型
}
interface B { }
// 2、interface:不可以写联合类型;type:写联合类型非常简单
type obj2 = string[] | number
// 3、interface:遇到重名的会进行合并;type:遇到重名的不会合并,并报错
4、type高级用法
// extends在type中是包含的意思(左边的值会作为右边类型的子类型)
type result = 1 extends number ? 1 : 0 // type result = 1
type result1 = 1 extends any ? 1 : 0 // type result1 = 1
type result2 = 1 extends number ? 1 : 0 // type result2 = 1
type result3 = 1 extends never ? 1 : 0 // type result3 = 0