类型别名的概念:

    类型别名类似于自定义类型,用法类似给数据定义一个范围,在使用这个类型的时候,这个类型只能在这写指定类型中使用,
    1. type str = string; //字符串类型
    2. type fnStr = () => string //函数类型,且返回值为字符串类型
    3. type num = 1 | 2 | 3 | 4 | 5 //这个类型为或的关系的多种值,且都为数字
    4. let s1: str = 111 //报错,类型错误
    5. let s: str = 'aaa' //正确
    6. let fn0: fnStr = 111 //报错,因为fn返回值必须是函数
    7. let fn: fnStr = 'aa' //报错,因为fn必须是函数
    8. let fn1:fnStr=()=>100 //报错,因为fn必须返回string
    9. let fn2: fnStr = () => 'aa' //正确,因为fnStr是函数,且返回了字符串
    10. let numData: num = 100 //报错,因为100不是num范围内的数据
    11. let numData1:num = 1 //正确

    通过类型别名,定义对象规定可以包含哪些属性,而且必须包含

    1. type obj={
    2. name:string,
    3. num:number
    4. }
    5. const dat:obj{
    6. name:'aaa'
    7. }
    8. //报错,因为这里使用了obj这个类型,这里定义dat对象没有全部定义obj的属性, 所以报错

    泛型类型别名