欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

遨游TypeScript海洋之定義變量和數(shù)據(jù)類型-創(chuàng)新互聯(lián)

熟悉JavaScript的小伙伴都知道,typescript是JavaScript的超集,也就是說(shuō)它包含JavaScript。所以我覺(jué)得,只要你想擁有更佳的模塊管理,讓你的開發(fā)更佳嚴(yán)謹(jǐn),那一定要學(xué)習(xí)使用typescript,今天我們接著來(lái)了解如何在TypeScript中定義變量,并熟悉JavaScript類型在TypeScript中的變化和TypeScript中新增的類型。

創(chuàng)新互聯(lián)是專業(yè)的無(wú)為網(wǎng)站建設(shè)公司,無(wú)為接單;提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行無(wú)為網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

一. 變量聲明方式
1.1. 聲明變量的格式

我們已經(jīng)強(qiáng)調(diào)過(guò)很多次,在TypeScript中定義變量需要指定 標(biāo)識(shí)符 的類型。

所以完整的聲明格式如下:

var/let/const 標(biāo)識(shí)符: 數(shù)據(jù)類型 = 賦值;

比如我們聲明一個(gè)message,完整的寫法如下:

注意:這里的string是小寫的,和String是有區(qū)別的
string是TypeScript中定義的字符串類型,String是ECMAScript中定義的一個(gè)類

let message: string = "Hello World";

message = "Hello TypeScript"; // 正確的做法
message = 20; // 錯(cuò)誤的做法,因?yàn)閙essage是一個(gè)string類型

1.2. 聲明變量的關(guān)鍵字

在TypeScript定義變量(標(biāo)識(shí)符)和ES6之后一致,可以使用var、let、const來(lái)定義:

var myname: string = "abc";
let myage: number = 20;
const myheight: number = 1.88;
但是,我們會(huì)發(fā)現(xiàn)使用var關(guān)鍵字會(huì)有一個(gè)警告:

遨游TypeScript海洋之定義變量和數(shù)據(jù)類型

   var關(guān)鍵字警告

可見,在TypeScript中并不建議再使用var關(guān)鍵字了,主要原因和ES6升級(jí)后let和var的區(qū)別是一樣的,var是沒(méi)有塊級(jí)作用域的,會(huì)引起很多的問(wèn)題,這里不再展開探討。

所以,在之后的開發(fā)中,我們定義變量主要使用let和const

1.3. 變量的類型推斷

在開發(fā)中,有時(shí)候?yàn)榱朔奖闫鹨娢覀儾⒉粫?huì)在聲明每一個(gè)變量時(shí)都寫上對(duì)應(yīng)的數(shù)據(jù)類型,我們更希望可以通過(guò)TypeScript本身的特性幫助我們推斷出對(duì)應(yīng)的變量類型:

let message = "Hello World";

上面的代碼我們并沒(méi)有指定類型,但是message實(shí)際上依然是一個(gè)字符串類型:
遨游TypeScript海洋之定義變量和數(shù)據(jù)類型

給message賦值一個(gè)number
這是因?yàn)樵谝粋€(gè)變量第一次賦值時(shí),會(huì)根據(jù)后面的賦值內(nèi)容的類型,來(lái)推斷出變量的類型:

上面的message就是因?yàn)楹竺尜x值的是一個(gè)string類型,所以message雖然沒(méi)有明確的說(shuō)明,但是依然是一個(gè)string類型

let message = "Hello World"; // string類型
let age = 20; // number類型
let isFlag = true; // boolean類型

1.4. 聲明name報(bào)錯(cuò)

我們?cè)赥ypeScript的文件中聲明一個(gè)name(很多其他的名字也會(huì))時(shí),會(huì)報(bào)錯(cuò):
遨游TypeScript海洋之定義變量和數(shù)據(jù)類型

聲明name報(bào)錯(cuò)信息
主要錯(cuò)誤信息:

無(wú)法重新聲明塊范圍變量“name”
我們前面明明(明明說(shuō)管我什么事)沒(méi)有聲明name,但是卻說(shuō)我們重復(fù)聲明了

這次是因?yàn)槲覀兊膖ypescript 將 DOM typings 作為全局的運(yùn)行環(huán)境;
所以當(dāng)我們聲明 name時(shí), 與 DOM 中的全局 name 屬性出現(xiàn)了重名;

遨游TypeScript海洋之定義變量和數(shù)據(jù)類型

name的聲明位置
如何解決這個(gè)問(wèn)題呢?

有兩種方案:去掉 DOM typings 的環(huán)境和聲明模塊
方式一:刪除DOM typings的環(huán)境

但是這種辦法對(duì)于我們來(lái)說(shuō)并不合適,因?yàn)槲覀円廊幌M贒OM下編譯我們的TypeScript代碼
遨游TypeScript海洋之定義變量和數(shù)據(jù)類型

刪除DOM typing

方式二:聲明我們的ts文件為一個(gè)模塊

既然與全局的變量出現(xiàn)重名,那我們將腳本封裝到模塊(module)中,因?yàn)槟K有屬于自己的作用域,就不會(huì)和全局的產(chǎn)生沖突:

在 Typescript 中,我們可以使用ES6的export來(lái)導(dǎo)出一個(gè)對(duì)象,并且該文件被視為 module
let name = "coderwhy";

export {};
1.5. console.log報(bào)錯(cuò)

另外為了測(cè)試方便我們經(jīng)常使用console.log來(lái)進(jìn)行測(cè)試,但是使用時(shí)會(huì)報(bào)一個(gè)警告:

console.log警告
這個(gè)時(shí)候,我們可以配置
遨游TypeScript海洋之定義變量和數(shù)據(jù)類型

配置tslint
"no-console": false

二. JavaScript數(shù)據(jù)類型
2.1. number類型

數(shù)字類型是我們開發(fā)中經(jīng)常使用的類型,TypeScript和JavaScript一樣,不區(qū)分整數(shù)類型(int)和浮點(diǎn)型(double),統(tǒng)一為number類型。

// 1.數(shù)字類型基本定義
let num = 100;
num = 20;
num = 6.66;
如果你學(xué)習(xí)過(guò)ES6應(yīng)該知道,ES6新增了二進(jìn)制和八進(jìn)制的表示方法,而TypeScript也是支持二進(jìn)制、八進(jìn)制、十六進(jìn)制的表示:

// 2.其他進(jìn)制表示
num = 100; // 十進(jìn)制
num = 0b110; // 二進(jìn)制
num = 0o555; // 八進(jìn)制
num = 0xf23; // 十六進(jìn)制
2.2. boolean類型

boolean類型只有兩個(gè)取值:true和false,非常簡(jiǎn)單

// boolean類型的表示
let flag: boolean = true;
flag = false;
flag = 20 > 30;
2.3. string類型

string類型是字符串類型,可以使用單引號(hào)或者雙引號(hào)表示:

注意:如果打開了TSLint,默認(rèn)情況下推薦使用使用雙引號(hào)
// string類型表示
let message: string = "Hello World";
message = 'Hello TypeScript';
同時(shí)也支持ES6的模板字符串來(lái)拼接變量和字符串:

const name = "why";
const age = 18;
const height = 1.88;

const info = my name is ${name}, age is ${age}, height is ${height};
console.log(info);
2.4. array類型

數(shù)組類型的定義也非常簡(jiǎn)單,有兩種方式:

但是TSLint會(huì)推薦我們使用上面這種方式
const names1: string[] = ["why", "abc", "cba"];
const names2: Array<string> = ["why", "abc", "cba"];
2.5. object類型

object對(duì)象類型可以用于描述一個(gè)對(duì)象:

// object類型表示
const myinfo: object = {
name: "why",
age: 20,
height: 1.88,
};
但是上面的代碼會(huì)報(bào)一個(gè)警告:

遨游TypeScript海洋之定義變量和數(shù)據(jù)類型

object定義后警告
這是因?yàn)門SLint建議我們所有的key按照字母進(jìn)行排序,但是這個(gè)并不是特別有必要,我們還是可以關(guān)閉掉:

遨游TypeScript海洋之定義變量和數(shù)據(jù)類型

關(guān)閉TSLint字母排序
"object-literal-sort-keys": false
屬性是不可以訪問(wèn)的

如果我們?cè)L問(wèn)myinfo中的屬性,會(huì)發(fā)現(xiàn)報(bào)錯(cuò):

遨游TypeScript海洋之定義變量和數(shù)據(jù)類型

找不到name屬性
這是因?yàn)門ypeScript并不知道某一個(gè)object類型上面就有一個(gè)name的屬性。

但是如果我們讓它是類型推斷的,就可以正常的訪問(wèn):

這是因?yàn)橥茖?dǎo)出來(lái)的類型,是如下的類型
遨游TypeScript海洋之定義變量和數(shù)據(jù)類型

myinfo的類型
還有一種方法是定義后面會(huì)學(xué)到的接口,TypeScript一個(gè)非常好用的特性就是接口interface,后續(xù)我們會(huì)進(jìn)行非常詳細(xì)的學(xué)習(xí)

2.6. symbol類型

在ES5中,如果我們是不可以在對(duì)象中添加相同的屬性名稱的,比如下面的做法:

const person = {
identity: "程序員",
identity: "老師",
}
通常我們的做法是定義兩個(gè)不同的屬性名字:比如identity1和identity2。

但是我們也可以通過(guò)symbol來(lái)定義相同的名稱,因?yàn)镾ymbol函數(shù)返回的是不同的值:

const s1 = Symbol("identity");
const s2 = Symbol("identity");

const person = {

};
這是Symbol的一個(gè)用法,更多其他用法大家可以自行學(xué)習(xí),或者等到后續(xù)確實(shí)需要用到時(shí),我們?cè)僭敿?xì)講解。

2.7. null和undefined

在 JavaScript 中,undefined 和 null 是兩個(gè)基本數(shù)據(jù)類型。

在TypeScript中,它們各自的類型也是undefined和null,也就意味著它們既是實(shí)際的值,也是自己的類型:

const n: null = null;
const u: undefined = undefined;
三. TypeScript數(shù)據(jù)類型
?TypeScript在原有的JavaScript基礎(chǔ)上引入了很多好用的類型:enum枚舉類型、tuple元組類型、any類型、void類型、never類型等”
3.1. enum類型

3.1.1. 枚舉的基本定義

枚舉類型在很多語(yǔ)言都有的類型,比如C++、Java等等,并且也非常好用,所以TypeScript引入了enum類型,讓我們開發(fā)更好的方便和安全。

枚舉類型通常是定義一組數(shù)據(jù):

enum Direction {
EAST,
WEST,
NORTH,
SOUTH,
}

const d1 = Direction.EAST;
const d2 = Direction.NORTH;
3.1.2. 枚舉類型的值

枚舉類型有自己的值,比如打印上面的d1和d2
遨游TypeScript海洋之定義變量和數(shù)據(jù)類型

打印d1和d2結(jié)果
默認(rèn)情況下,枚舉中的數(shù)據(jù)是從0開始的,我們可以改變它的初始化值,比如下面的代碼:

enum Direction {
EAST = 10,
WEST,
NORTH,
SOUTH,
}

const d1 = Direction.EAST;
const d2 = Direction.NORTH;

console.log(d1); // 10
console.log(d2); // 12
也可以全部自己來(lái)指定:

enum Direction {
EAST = 10,
WEST = 20,
NORTH = 30,
SOUTH = 40,
}

const d1 = Direction.EAST;
const d2 = Direction.NORTH;

console.log(d1); // 10
console.log(d2); // 30
我們也可以通過(guò)對(duì)應(yīng)的值去獲取對(duì)應(yīng)的數(shù)據(jù)名稱:

console.log(Direction[10]); // EAST
console.log(Direction[30]); // NORTH
3.2. tuple類型

3.2.1. tuple的基本使用

tuple是元組類型,很多語(yǔ)言中也有這種數(shù)據(jù)類型,比如Python、Swift等。

const tInfo: [string, number, number] = ["why", 18, 1.88];
const item1 = tInfo[0]; // why, 并且知道類型是string類型
const item2 = tInfo[1]; // 18, 并且知道類型是number類型
3.2.1. tuple和數(shù)組類比

初學(xué)tuple會(huì)覺(jué)得它和數(shù)組非常相似

但是數(shù)組中通常會(huì)定義一組相同的數(shù)據(jù),如果數(shù)據(jù)不同會(huì)造成類型的丟失:

注意:這里我使用了一種聯(lián)合類型,后面會(huì)講到
const aInfo: Array<string|number> = ["why", 18, 1.88];
const itema = aInfo[0]; // why,但是并不知道itema是string類型還是number類型
3.3. any類型

在某些情況下,我們確實(shí)無(wú)法確定一個(gè)變量的類型,并且可能它會(huì)發(fā)生一些變化,這個(gè)時(shí)候我們可以使用any類型(類似于Dart語(yǔ)言中的dynamic類型)

let a: any = "why";
a = 123;
a = true;

const aArray: any[] = ["why", 18, 1.88];
3.4. void類型

void類型通常用于函數(shù)沒(méi)有返回值時(shí)來(lái)使用:

首先我們需要說(shuō)明的是,在TypeScript中函數(shù)也是有類型的
下面的函數(shù),雖然我們沒(méi)有指定它的類型,但是它會(huì)通過(guò)類型推導(dǎo)出來(lái):

const sum = (num1: number, num2: number) => {
return num1 + num2;
};

// 相當(dāng)于下面的寫法
const sum: (num1: number, num2: number) => number = (num1: number, num2: number) => {
return num1 + num2;
};
遨游TypeScript海洋之定義變量和數(shù)據(jù)類型
sum函數(shù)的類型
如果一個(gè)函數(shù)沒(méi)有返回值,那么它的返回值類型就是void

我們可以將null和undefined賦值給void類型,也就是函數(shù)可以返回null或者undefined
const sayHello: (name: string) => void = (name: string) => {
console.log("hello " + name);
};
3.5. never類型

never類型表示一種從來(lái)不會(huì)存在的值的類型,有點(diǎn)繞,我們來(lái)這樣理解:

如果一個(gè)函數(shù)中是一個(gè)死循環(huán),那么這個(gè)函數(shù)會(huì)返回東西嗎?不會(huì),那么寫void類型或者其他類型作為返回值類型都不合適,我們就可以使用never類型。
如果一個(gè)函數(shù)是拋出一個(gè)異常,那么這個(gè)函數(shù)是不是也沒(méi)有返回值呢?這個(gè)時(shí)候我們也可以使用never類型。
遨游TypeScript海洋之定義變量和數(shù)據(jù)類型
死循環(huán)的函數(shù)
遨游TypeScript海洋之定義變量和數(shù)據(jù)類型
拋出異常的函數(shù)
備注:所有內(nèi)容首發(fā)于公眾號(hào)Flutter、TypeScript、React、Node、uniapp、小程序開發(fā)、數(shù)據(jù)結(jié)構(gòu)與算法等等,也會(huì)更新一些自己的學(xué)習(xí)心得等,歡迎大家關(guān)注。
看到這里,想必你已經(jīng)了解關(guān)于typescript定義變量和數(shù)據(jù)類型的變化相關(guān)的信息,但其實(shí)這只是typescript中的冰山一角。其中還有更多的奧秘等待我們發(fā)現(xiàn)。我也會(huì)接著為你慢慢揭開它的神秘面紗。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

標(biāo)題名稱:遨游TypeScript海洋之定義變量和數(shù)據(jù)類型-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://aaarwkj.com/article40/cdhgho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷App開發(fā)、全網(wǎng)營(yíng)銷推廣、外貿(mào)網(wǎng)站建設(shè)、商城網(wǎng)站域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)
国产男女猛烈无遮挡网站 | 91伊人手机在线观看| 久久最新视频中文字幕| 日韩不卡区高清在线视频| 婷婷激情综合亚洲五月色| 日韩一级片精品视频在线| 亚洲欧洲av男人的天堂| 日本福利写真在线观看| 免费直接在线看亚洲黄色| 国产av手机自拍看片| 欧美一区二区三区亚洲| 亚洲欧美一区日韩尤物| 日本一区中文字幕怎么用| 国产成人在线观看av| 日韩亚洲欧美国产另类| 乡村丰满的大屁股熟妇| 日韩欧美黄片一区二区三区| 亚洲蜜桃精品一区二区三区| 欧美高清视频免费播放| 亚洲一区二区天堂av| 国产精品日韩伦理一区二区| 亚洲二区三区四区在线| 青青草av一区二区三区| 国产男女视频免费观看| 岛国毛片在线免费播放| 国产三级三级在线观看| 国产精品深夜在线观看| 日本一区二区三区高清在线| 午夜国产激情福利网站| 中文字幕精品一区二区介绍| 国产成人大片一区二区三区| 国产欧美日韩另类在线播放| 日韩毛片中文字幕在线观看| av资源天堂第一区第二区第三区 | 国产精品午夜视频免费观看| 视频一区二区视频三区| 小黄片视频免费在线播放| 亚洲天堂日韩欧美在线| 成人黄性视频免费网看| av中文字幕熟妇人妻少妇| av东京热狠狠男人的天堂|