詳解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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM