TypeScript总结 一【数组,联合,交叉类型】

最近刚把ts学完,简单总结一下,ts的话,更强调类型,更加严谨

非原始类型

1.object(不包括基础数据类型),小写的

let obj:object = {a:1}
let obj:object = [1]

2.Object(包括基础数据类型),大写的O

let obj:Object = 1
let obj:Object = '123'

3.{}等价于Object

let obj:{}='123'

数组类型:数组类型有3种,如下,

//第一种
let arr:number[] = [1,2,3]
//第二种:泛型
let arr:Array<number> = [1, 2, 3]//整体是数组,并且里面的元素必须为number类型
//第三种:元组
let arr:[number, number, string] = [1, 2, '3']

联合类型:|   就是‘或’的意思

//第一个例子
第一种写法
let numArr:number|string = 10//number的类型既可以为number类型,也可以为string类型
numArr = 1
numArr = '小花'
第二种写法
let numArr:1 | '2' = 1//表示numArr必须只能等于1和'2'
numArr = '2'
//第二个例子
let obj:{a:1,b:'2'}
obj = {a:1}
obj = {b:'2'}
obj = {a:1,b:'2'}//也就是说obj既可以等于a属性,也可以等于b属性,也可以有ab两个属性

交叉类型:& 就是‘与’的意思

//必须全部满足的意思
let obj:{name:string, age:number}&{height:number}
obj = {'张三', 22, 180}

any与unknown

any:绕过类型检测,简单说,就是使用了any就和js语言没区别了

unknown:可以将所有的类型都赋给unknown,unknown会进行校验(当从后台拿到数据不知道是什么类型使用unknown)

 未知类型不能使用tofixed方法

接口类型--interface

//interface用于自定义类型
//1.给对象用
interface MyItf{
    name:string
    age:number
    height:number
}
let obj:MyItf;
obj = {
    name:'小花',
    age:20,
    height:12
}
// 定义接口类型 --- 给数组用
interface MyArr{
    [idx:number]:number|string
}
let obj1:MyArr;
obj1 = [1, 2, '小花']

// 定义函数类型  --- 给函数用
interface MyFun{
    (p:number,n:string):void
}
let fun:MyFun = (p:number,n:string) => {}
fun(1,"")

猜你喜欢

转载自blog.csdn.net/qq_59294119/article/details/130927712
今日推荐