亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

TypeScript 初識(shí) - 變量

dinfer / 665人閱讀

摘要:通常會(huì)定義為函數(shù)的返回值一個(gè)類(lèi)型的變量是沒(méi)有生命用處的,因?yàn)轭?lèi)型的變量只能賦值為。和有一些區(qū)別的,函數(shù)沒(méi)有返回值時(shí)返回類(lèi)型為的方法,即使沒(méi)有寫(xiě)明語(yǔ)句,也會(huì)在函數(shù)執(zhí)行完的時(shí)候,隱式地返回一個(gè)類(lèi)型。中新增加的變量聲明方式。

類(lèi)型注解

類(lèi)型注解使用 :TypeAnnotation 語(yǔ)法。類(lèi)型聲明空間中可用的任何內(nèi)容都可以用作類(lèi)型注解。

const num: number = 123;
function identity(num: number): number {
    return num;
}
基礎(chǔ)類(lèi)型

TypeScript 支持原生 JavaScript 所有的基礎(chǔ)數(shù)據(jù)類(lèi)型:

undefined

null

string

number

boolean

symbol(ES6)

也支持引用數(shù)據(jù)類(lèi)型:

Object

Array

Map

Set

TypeScript 還擴(kuò)展一些數(shù)據(jù)類(lèi)型:

元組 tuple

元組類(lèi)型允許表示一個(gè)已知元素?cái)?shù)量和類(lèi)型的數(shù)組,各元素的類(lèi)型不必相同。

const tuple: [string, number] = ["string", 123];
// tuple[0] 只能指定 string 類(lèi)型,tuple[1] 只能指定 number 類(lèi)型

其實(shí)元組可以看作是一個(gè)嚴(yán)格的數(shù)組,規(guī)定了指定索引位置的元素類(lèi)型,還限制了數(shù)組的長(zhǎng)度(v2.7,官方中文文檔未更新)。

任意類(lèi)型 any

其他類(lèi)型都是 any 類(lèi)型的子類(lèi)型,any 類(lèi)型的值可以被賦值為除 never 類(lèi)型外的任何類(lèi)型的值:

let an: any = "any 類(lèi)型";
console.log(an);
// any 類(lèi)型
an = 25;
console.log(an);
// 25

如果在聲明變量時(shí),沒(méi)有聲明其類(lèi)型,也沒(méi)有初始化,(因?yàn)轭?lèi)型推斷會(huì)自動(dòng)判斷類(lèi)型),那么它就會(huì)被判斷為 any 類(lèi)型:

let an1;
an1 = "沒(méi)有聲明其類(lèi)型,也沒(méi)有初始化";
console.log(an1);
// 沒(méi)有聲明其類(lèi)型,也沒(méi)有初始化
an1 = 25;
console.log(an1);
// 25

any 類(lèi)型可以看作是一個(gè)動(dòng)態(tài)類(lèi)型,類(lèi)型檢查器直接讓這些 any 類(lèi)型的變量通過(guò)編譯階段的檢查。

any 類(lèi)型的變量可以調(diào)用任意的方法,這和 JavaScript 中常規(guī)定義的變量相同,但是運(yùn)行時(shí)如果沒(méi)有這些方法仍然會(huì)報(bào)錯(cuò):

let something: any = 42;
// 可以通過(guò)編譯,但是運(yùn)行時(shí)沒(méi)有這個(gè)方法時(shí)候報(bào)錯(cuò)的
something.mayExist();
// 可以通過(guò)編譯,運(yùn)行也不會(huì)報(bào)錯(cuò)
something.toFixed();
無(wú)類(lèi)型 void

void 可以看作和 any 相反的類(lèi)型,void 表示沒(méi)有任何類(lèi)型。通常會(huì)定義為函數(shù)的返回值:

function info(): void {
  console.log("this is info!");
}

一個(gè) void 類(lèi)型的變量是沒(méi)有生命用處的,因?yàn)?void 類(lèi)型的變量只能賦值為 undefined、null。

不存在的值 never

never 類(lèi)型表示永不存在的值。never 類(lèi)型是 TypeScript 中的最底層類(lèi)型:

一個(gè)從來(lái)不會(huì)有返回值的函數(shù);

一個(gè)總是會(huì)拋出錯(cuò)誤的函數(shù);

never 類(lèi)型是任何類(lèi)型的子類(lèi)型,也可以賦值給任何類(lèi)型,但是 never 僅能被賦值給另外一個(gè) never 類(lèi)型。

nevervoid 有一些區(qū)別的,函數(shù)沒(méi)有返回值時(shí):

返回類(lèi)型為 void 的方法,即使沒(méi)有寫(xiě)明 return x 語(yǔ)句,也會(huì)在函數(shù)執(zhí)行完的時(shí)候,隱式地返回一個(gè) void 類(lèi)型。

返回類(lèi)型為 never 的方法,完全不可能執(zhí)行 return 語(yǔ)句,換句話(huà)說(shuō)這個(gè)方法執(zhí)行不完,真真正正的不返回。

正則表達(dá)式類(lèi)型 regexp
//構(gòu)造函數(shù)聲明法
let reg1: RegExp = new RegExp("ljy", "gi");
console.log(reg1);

//字面量的聲明法
let reg2: RegExp = /ljy/gi;
console.log(reg2);
枚舉 enum 類(lèi)型斷言

TypeScript 也不是萬(wàn)能的,對(duì)變量類(lèi)型的解析也是會(huì)出錯(cuò),這個(gè)時(shí)候就需要類(lèi)型斷言。

“尖括號(hào)”語(yǔ)法:

const someValue: any = "this is a string";
const strLength: number = (someValue).length;

as 語(yǔ)法:

const someValue: any = "this is a string";
const strLength: number = (someValue as string).length;

類(lèi)型斷言不是類(lèi)型轉(zhuǎn)換,斷言成一個(gè)聯(lián)合類(lèi)型中不存在的類(lèi)型時(shí)不允許的:

function toBoolean(something: string | number): boolean {
    // Type "string | number" cannot be converted to type "boolean"
    return something;
}
變量聲明 var

盡量避免使用 var 聲明變量。

let

ES6 中新增加的變量聲明方式。和 var 相似,但是更容易理解。

const

ES6 中新增加的變量聲明方式。和 let 相似,但是不允許修改。

使用最小特權(quán)原則,所有變量聲明方式第一選擇為 const,只有在確定需要修改變量時(shí),才需要使用 let 進(jìn)行聲明。

類(lèi)型別名

類(lèi)型別名常用于聯(lián)合類(lèi)型,可以使用 type 創(chuàng)建類(lèi)型別名:

type Name = string;
type NameResolver = () => string;
type NameOrResolver = Name | NameResolver;
function getName(n: NameOrResolver): Name {
    if (typeof n === "string") {
        return n;
    } else {
        return n();
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/106655.html

相關(guān)文章

  • TypeScript 初識(shí) - 高級(jí)類(lèi)型

    摘要:聯(lián)合類(lèi)型聯(lián)合類(lèi)型表示一個(gè)值可以時(shí)集中類(lèi)型之一,使用進(jìn)行分隔每種類(lèi)行。聯(lián)合類(lèi)型的變量在被賦值的時(shí)候,根據(jù)類(lèi)型推論的規(guī)則,推斷出一個(gè)類(lèi)型。 聯(lián)合類(lèi)型 聯(lián)合類(lèi)型表示一個(gè)值可以時(shí)集中類(lèi)型之一,使用 | 進(jìn)行分隔每種類(lèi)行。 聯(lián)合類(lèi)型的變量在被賦值的時(shí)候,根據(jù)類(lèi)型推論的規(guī)則,推斷出一個(gè)類(lèi)型。 聯(lián)合類(lèi)型的變量當(dāng)被推斷出類(lèi)型后,就變得和正常聲明的變量一樣: let ddd: string | numb...

    CatalpaFlat 評(píng)論0 收藏0
  • TypeScript 初識(shí) - 接口

    摘要:接口的作用是聲明變量的結(jié)構(gòu)和方法,但不做具體的實(shí)現(xiàn)。這兩個(gè)使用場(chǎng)景不同。額外的屬性檢查從字面上的意思看,其實(shí)就是對(duì)接口未定義的屬性進(jìn)行檢查。上面的例子,定義了接口,它具有索引簽名。它不會(huì)幫你檢查類(lèi)是否具有某些私有成員。 接口的作用是聲明變量的結(jié)構(gòu)和方法,但不做具體的實(shí)現(xiàn)。通常,接口會(huì)強(qiáng)制對(duì)所有成員進(jìn)行類(lèi)型檢查,包括數(shù)量和類(lèi)型: interface Name { first: s...

    gnehc 評(píng)論0 收藏0
  • TypeScript 初識(shí)

    摘要:當(dāng)你陷在一個(gè)中大型項(xiàng)目中時(shí)應(yīng)用日趨成為常態(tài),沒(méi)有類(lèi)型約束類(lèi)型推斷,總有種牽一發(fā)而動(dòng)全身的危機(jī)和束縛??傮w而言,這些付出相對(duì)于代碼的健壯性和可維護(hù)性,都是值得的。目前主流的都為的開(kāi)發(fā)提供了良好的支持,比如和。參考資料中文文檔 文章博客地址:http://pinggod.com/2016/Typescript/ TypeScript 是 JavaScript 的超集,為 JavaScrip...

    iliyaku 評(píng)論0 收藏0
  • TypeScript 初識(shí) - 類(lèi)

    摘要:抽象類(lèi)抽象類(lèi)做為其它字類(lèi)的基類(lèi)使用,一般不會(huì)直接被實(shí)例化。抽象類(lèi)中可以包含具體實(shí)現(xiàn),接口不能。抽象類(lèi)在運(yùn)行時(shí)是可見(jiàn)的,可以通過(guò)判斷。接口只能描述類(lèi)的公共部分,不會(huì)檢查私有成員,而抽象類(lèi)沒(méi)有這樣的限制。 一個(gè)普通的類(lèi) class Greeter { greeting: string; constructor(message: string) { this....

    鄒強(qiáng) 評(píng)論0 收藏0
  • 那些年初識(shí)Angular(1)

    摘要:它包含多個(gè)屬性,這些屬性值叫做元數(shù)據(jù)。會(huì)根據(jù)元數(shù)據(jù)渲染組件,并執(zhí)行組件邏輯。元數(shù)據(jù)會(huì)告訴圖和將這個(gè)類(lèi)處理成一個(gè)組件。元數(shù)據(jù)這段代碼表示這個(gè)組件可以通過(guò)這個(gè)標(biāo)簽來(lái)調(diào)用。 那些年初識(shí)Angular 由于工作需要初識(shí)了Angular,由于個(gè)人在學(xué)習(xí)一門(mén)新語(yǔ)言的時(shí)候喜歡買(mǎi)一本相關(guān)的書(shū)籍自己鉆研,還記得自己的第一本Angular書(shū)籍是關(guān)于Angular2的學(xué)習(xí),自此正式踏入Angular的學(xué)習(xí)。...

    Flink_China 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<