成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

TypeScript 初識 - 變量

dinfer / 635人閱讀

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

類型注解

類型注解使用 :TypeAnnotation 語法。類型聲明空間中可用的任何內容都可以用作類型注解。

const num: number = 123;
function identity(num: number): number {
    return num;
}
基礎類型

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

undefined

null

string

number

boolean

symbol(ES6)

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

Object

Array

Map

Set

TypeScript 還擴展一些數(shù)據(jù)類型:

元組 tuple

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

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

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

任意類型 any

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

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

如果在聲明變量時,沒有聲明其類型,也沒有初始化,(因為類型推斷會自動判斷類型),那么它就會被判斷為 any 類型:

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

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

any 類型的變量可以調用任意的方法,這和 JavaScript 中常規(guī)定義的變量相同,但是運行時如果沒有這些方法仍然會報錯:

let something: any = 42;
// 可以通過編譯,但是運行時沒有這個方法時候報錯的
something.mayExist();
// 可以通過編譯,運行也不會報錯
something.toFixed();
無類型 void

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

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

一個 void 類型的變量是沒有生命用處的,因為 void 類型的變量只能賦值為 undefinednull。

不存在的值 never

never 類型表示永不存在的值。never 類型是 TypeScript 中的最底層類型:

一個從來不會有返回值的函數(shù);

一個總是會拋出錯誤的函數(shù);

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

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

返回類型為 void 的方法,即使沒有寫明 return x 語句,也會在函數(shù)執(zhí)行完的時候,隱式地返回一個 void 類型。

返回類型為 never 的方法,完全不可能執(zhí)行 return 語句,換句話說這個方法執(zhí)行不完,真真正正的不返回。

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

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

TypeScript 也不是萬能的,對變量類型的解析也是會出錯,這個時候就需要類型斷言。

“尖括號”語法:

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

as 語法:

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

類型斷言不是類型轉換,斷言成一個聯(lián)合類型中不存在的類型時不允許的:

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 相似,但是不允許修改。

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

類型別名

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

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

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

轉載請注明本文地址:http://systransis.cn/yun/106655.html

相關文章

  • TypeScript 初識 - 高級類型

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

    CatalpaFlat 評論0 收藏0
  • TypeScript 初識 - 接口

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

    gnehc 評論0 收藏0
  • TypeScript 初識

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

    iliyaku 評論0 收藏0
  • TypeScript 初識 - 類

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

    鄒強 評論0 收藏0
  • 那些年初識Angular(1)

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

    Flink_China 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<