TS入门+类型定义+接口理解

 //ts用法
    var n:number = 1;
    // var n = '213'; //err
    var str = "213244";
    // str = 123; //err
    var str:string = '1';
    str = 'dddd'
    var str2:string = `hello ${str2}`;
    var bool:boolean = false;
    bool = true;
    // bool = '1231'; //err
    var un:undefined = undefined;
    // un = '2121'; //err
    // un = 123; //err
    // un = a; //err
    var nu:null = null;
    // nu = 123; //err
    // nu = a; //err
    
    //小结:数据类型定义后,不允许数据类型改变
    
    //任意值(Any)用来表示允许赋值为任意类型
    var b:any = 213;
    b = '21123';
    b = [1,2,3];
    
    //变量如果在声明的时候,未指定其类型,会被识别为任意值
    var c ;
    c = 'ac2';
    c = 123;
    
    //联合类型 可以为多种类型中的一种
    var d:string | number;
    d = 10;
    d = 'asc';

    //注意 !!! 访问的是联合属性共有的属性中方法
    // function getLength (str:string | number):number{
    //     return str.length; //length--->err
    // }
    // getLength(d);

    //正确写法
    function getLength (str:string | number[]):number{
        return str.length; //length--->err
    }
    getLength(d);

    //数组有多种定义方式
    //最简单的方式 类型+方括号 来表示数组
    var arr:number[] = [1,2,3];
    var arr2:string[] = ['dd','xx','xnnx'];
    var arr3:any[] = ['dd',1,true];

    //对象的类型 --接口
    //接口(interface) 可以用于对 【对象的形状(Shape)】进行描述
    //规范
    //接口首字母大写
    interface Person {
        name:string,
        age:number
    }
    //对象受到接口的约束
    var p1:Person = {
        name:'nnn',
        age:12
    }
    //定义的变量比接口少了属性是否允许 --不允许
    var p2:Person = {
        name:'1213'
    }
    //定义的变量比接口多了属性是否允许 --不允许
    var p3:Person = {
        name:'12',
        age:12,
        sex:'man'
    }
    //可选属性 希望接口中有可选属性
    interface Animal {
        name?:string,
        age:number
    }
    var a1:Animal = {
        age:123
    }
    var a1:Animal = {
        age:123,
        name:'ccc'
    }
    //可选属性只针对于当前设置的属性,仍然不能添加其它属性
    var a3:Animal = {
        name:'bb',
        age:12,
        sex:'man'
    }

    //任意属性 接口中添加一个任意的属性
    interface Animal2 {
        name:string,
        age?:number, //可选属性
        [propName:string]:any; //任意属性
    }
    // 注意:写入了任意属性[propName:string]那么确定属性和可选属性必须是它的子属性
    var cat:Animal2 = {
        name:'mm',
        sex:'woman'
    }
    var cat:Animal2 = {
        name:'mm',
        age:1,
        type:'animal'
    }
    //函数类型 输入和输出的约束
    //函数声明
    function fun1(a:number,b:number):number{
        return a+b;
    }
    fun1(1,1)
    //函数表达式
    var fun2 = function(a:number,b:number):number{
        return a+b;
    }
    fun2(2,8)
    //参数默认值
    function fun3(x:number = 2,y:number):number{
        return x+y;
    }
    //参数可选
    //注意!!!可选参数必须接在必需参数后面
    //换句化说:可选参数后面不允许出现必需参数
    function fun4(x:number = 1,y?:number):number{
        if(y){
            return x+y;
        }else {
            return x;
        }
    }
    fun4(1);
    fun4(20,1)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值