• 详解TypScript数据类型转换


    最近在用TypeScript(后面简称TS),发现TS虽然语法和C#差不多但是在很多地方还是不够高级(和C#相比),这里主要聚焦在数据类型强转上面,直接看下面案例吧

    string转number 

    案例如下

        let i: number = 0;
        console.log(typeof i);
        let k: string = '123';
        console.log(typeof k);
        i = +k;
        console.log(typeof i,typeof k);
        console.log(i);
    

    上面代码执行结果是 
    number 
    string 
    number string 
    123 

    ** 自定义类型如何强转? **

    查了下TypeScript里数据类型强转是通过以下方式:

            let yy: any = '111';
            console.log('yy数据类型为:', typeof (yy));
            let kk: number = <number>yy;
            console.log('yy数据类型为:', typeof (yy), 'kk数据类型为:', typeof(kk));
    
    

    代码结果是:"yy数据类型为: string" 
    “yy数据类型为: string kk数据类型为: string”

    需要说明的是代码中变量yy必须申明为any类型,否则编译器会提示语法错误。由此我得知的结论是TS的强转前提是需强转的对象数据类型必须为any。 那么TS的强制转换只有这一个前提么? 继续看下面代码:

            console.log('begindate格式化前的类型',
                typeof ($(this.BeginDateDatePicker.nativeElement).data('DateTimePicker').date()));
    
            console.log('begindate格式化后的类型:',
                typeof ($(this.BeginDateDatePicker.nativeElement).data('DateTimePicker').date().format('L')));
    
            let y = <moment.Moment>($(this.BeginDateDatePicker.nativeElement).data('DateTimePicker').date().format('L'));
            console.log('begindate式化后后再转换后的类型:',
                typeof (y));
    

    上面代码中用到了页面中的日期input的值,也引用了Moment插件(官网:http://momentjs.cn/)。

    代码需求是要将input的日期格式化为"yyyy-MM-dd"格式。上面的代码可以编译通过,虽然需转换类型的日期值对象当前数据类型为string(不为any),但是编译器还是通过了。我们来看最终执行结果:

    结果如下: 
    begindate格式化前的类型 object 
    begindate格式化后的类型: string 
    begindate式化后后再转换后的类型: string 

    结论

    上面代码的执行结果可知,TS内置数据类型强转方式是建立在TS内置的数据类型基础上 我们自定义数据类型或是第三方插件的数据类型如需强转需要自己实现。 同时,对内置数据类型强转也需遵循TS自身的语法要求。

    最后还是通过momentjs官网的强转方式将string对象转换成了moment.Moment类型对象。最终代码如下:

            createOrEditInput.luckDrawActivitySetting.beginDate =
                moment($(this.BeginDateDatePicker.nativeElement)
                    .data('DateTimePicker').date().format('L'));
                    
            createOrEditInput.luckDrawActivitySetting.endDate =
                moment($(this.EndDateDatePicker.nativeElement)
                    .data('Da
  • 相关阅读:
    第三章 达瑞,一个很能挣钱的男孩
    入门代码教程第一节 如何:定义服务协定
    第二节 Windows Communication Foundation 基础概念
    入门代码教程第四节 如何:创建客户端
    BZOJ:2186: [Sdoi2008]沙拉公主的困惑
    DNN学习笔记代码学习:Provider 荣
    DNN学习笔记代码学习:DataCache 荣
    DNN学习笔记代码学习:ProviderConfiguration 荣
    DNN学习笔记代码学习:Reflection 荣
    java动态加载类
  • 原文地址:https://www.cnblogs.com/hunanzp/p/10144358.html
Copyright © 2020-2023  润新知