欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

TypeScript里string和String的區(qū)別

 更新時間:2022年03月30日 15:21:56   作者:華為云開發(fā)者社區(qū)  
這篇文章主要介紹了TypeScript里string和String的區(qū)別,真的不止是大小寫的區(qū)別,string表示原生類型,而String表示對象,下文更多詳細內容需要的小伙伴可以參考一下

摘要:通常來說,string表示原生類型,而String表示對象。

背景

JavaScript語言不同的是,TypeScript使用的是靜態(tài)類型,比如說它指定了變量可以保存的數(shù)據(jù)類型。如下圖所示,如果在JS中,指定變量可以保存的數(shù)據(jù)類型,會報錯:“類型注釋只可以在TS文件中被使用”:

TypeScript是JavaScript的超集(superset),TypeScript需要編譯(語法轉換)生成JavaScript才能被瀏覽器執(zhí)行,它也區(qū)分了string和String這兩個數(shù)據(jù)類型。通常來說,string表示原生類型,而String表示對象。

1、原生string

JavaScript在ES6標準里支持6種原生類型(number),string是其中之一。

原生的string是不包含屬性的值(即沒有properties),包括字面上沒有定義類型、字面上定義了string、字面上定義了String和一些從string函數(shù)調用返回的strings也都可以被歸為原生類型:

以上三個變量的類型(typeof())是string。

2、對象String

對象是不同屬性的累積,一個對象可以調用許多相應的方法。

let msg3: String = new String('Hello world!');

這個變量msg3的類型就是object:

console.log(typeof(msg3)); // object

String對象支持的方法:

3、代碼對比

我們對下面4個變量進行類型的探索與比較:

let msg: string = 'Hello world!';
let msg2: String = 'Hello world!';
let msg22 = 'Hello world!';  //字面上沒有定義類型
let msg3: String = new String('Hello world!');

console.log(typeof(msg));  //string
console.log(typeof(msg2));  //string
console.log(typeof(msg22));  //string
console.log(typeof(msg3));  //object
console.log(msg === msg2);  //true
console.log(msg === msg3);  //false
console.log(msg2 === msg3);  //false

4、為什么需要String對象

首先,當我們使用關鍵字new新建一個String對象的時候,TS會創(chuàng)建一個新的對象;即我們用new新建了兩個String對象,即使內容相同,它們也是指向不同的內存。

舉下面兩個栗子:

1.當用a1,b1代表相同值的兩個變量的時候,它們是相同的;而當用new新建兩個對象的時候,即使值相同,它們也是不同的(下圖會輸出false, true):

2.eval()函數(shù)的作用:用來計算表達式的值。如果我們把eval()直接賦給string,而string里面是計算式的字符串,那么它會返回計算后的值;而如果我們把eval()賦給String,因為它不是原生類型,它只會返回String這個對象(下圖會輸出27, :"8 + 20", 28):

其次,因為String對象可以有屬性。我們可以用String對象在屬性里保留一個額外的值。即使這個用法并不常見,但是仍然是TS的一個特性:

var prim = 'hello HW';
var obj = new String('hello HW Cloud');

prim.property = 'PaaS'; // Invalid
obj.property = 'PaaS';  // Valid
console.log(obj.property); //輸出為PaaS

4、兩者區(qū)別總結 

到此這篇關于TypeScript里string和String的區(qū)別的文章就介紹到這了,更多相關TypeScript里string和String內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論