TypeScript學(xué)習(xí)

布爾值

let isBoolean: boolean = true;

數(shù)字

let num: number = 1;

字符串

let str: string = 'abc';

數(shù)組

let arr: number[] = [1,2,3];
let arr2: Array<number> = [1,2,4];

元組:表示一個已知元素數(shù)量和類型的數(shù)組,各元素的類型可以不相同

let x: [string, number];
x = ['hello', 10];//OK
x = [10, 'hello'];//error
console.log(x[0].substr(1));//"hello"
console.log(x[1].substr(1)); // Error, 'number' does not have 'substr'

letvar的區(qū)別:

var多次聲明同一個變量不會報錯
let聲明一個變量,使用的是詞法作用域或者塊作用域,不同于var聲明的變量那樣可以在函數(shù)外部訪問,塊級作用域在包含他們的塊或者for循環(huán)外是不能被訪問的
let聲明的變量,不能在被聲明前讀寫
塊級作用域變量需要在明顯不同的塊里聲明
當(dāng)let聲明出現(xiàn)在循環(huán)體里時擁有完全不同的行為,不僅在循環(huán)體里引入了一個新的變量環(huán)境,并且針對每次迭代都會創(chuàng)建這樣一個新作用域。這就是我們在使用立即執(zhí)行的函數(shù)表達(dá)式時做的事,所以在 setTimeout例子里我們僅使用let聲明就可以了

for (let i = 0; i < 10 ; i++) {
    setTimeout(function() {console.log(i); }, 100 * i);
}
//0,1,2,3,4,5,6,7,8,9

const聲明

const擁有和let相同的作用域規(guī)則,但是它聲明的變量值不能再被修改

類型斷言

索引簽名

this和箭頭函數(shù)

箭頭函數(shù)能保存函數(shù)創(chuàng)建時的this值,而不是調(diào)用時的值

模塊

兩個模塊之間的關(guān)系,是通過在文件級別上使用exportsimports建立的
模塊使用模塊加載器去導(dǎo)入其他的模塊。在運(yùn)行時,模塊加載器的作用是在執(zhí)行此模塊代碼前去檢查并執(zhí)行這個模塊的所有依賴。大家最熟知的JavaScript模塊加載器是服務(wù)于Node.js的 CommonJS和服務(wù)于Web應(yīng)用的Require.js。

export導(dǎo)出模塊,import 導(dǎo)入導(dǎo)出的模塊

不應(yīng)該對模塊使用命名空間,使用命名空間是為了提供邏輯分組和避免命名沖突

使用非相對路徑來導(dǎo)入你的外部依賴

Classic解析策略

相對導(dǎo)入的模塊是相對于導(dǎo)入它的文件進(jìn)行解析的。 因此 /root/src/folder/A.ts文件里的import { b } from "./moduleB"會使用下面的查找流程:
/root/src/folder/moduleB.ts
/root/src/folder/moduleB.d.ts
對于非相對模塊的導(dǎo)入,編譯器則會從包含導(dǎo)入文件的目錄開始依次向上級目錄遍歷,嘗試定位匹配的聲明文件。
比如:
有一個對moduleB的非相對導(dǎo)入import { b } from "moduleB",它是在/root/src/folder/A.ts文件里,會以如下的方式來定位"moduleB"
/root/src/folder/moduleB.ts
/root/src/folder/moduleB.d.ts
/root/src/moduleB.ts
/root/src/moduleB.d.ts
/root/moduleB.ts
/root/moduleB.d.ts
/moduleB.ts
/moduleB.d.ts

Node解析策略

Node.js里導(dǎo)入是通過require函數(shù)調(diào)用進(jìn)行的。 Node.js會根據(jù) require的是相對路徑還是非相對路徑做出不同的行為
非相對模塊名的解析是個完全不同的過程。Node會在一個特殊的文件夾 node_modules
里查找你的模塊。node_modules
可能與當(dāng)前文件在同一級目錄下,或者在上層目錄里。 Node會向上級目錄遍歷,查找每個node_modules
直到它找到要加載的模塊。

TypeScript解析模塊

TypeScript是模仿Node.js運(yùn)行時的解析策略來在編譯階段定位模塊定義文件。 因此,TypeScriptNode解析邏輯基礎(chǔ)上增加了TypeScript源文件的擴(kuò)展名( .ts,.tsx.d.ts)。 同時,TypeScriptpackage.json里使用字段"typings"來表示類似"main"的意義 - 編譯器會使用它來找到要使用的"main"定義文件。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 字符串的新特性 多行字符串 使用``實現(xiàn)多行字符串 編譯成js代碼為: 字符串模板 其實和多行字符串差不多 編譯j...
    壹點(diǎn)微塵閱讀 414評論 0 2
  • 關(guān)于類型定義文件的管理工具,經(jīng)歷了 tsd、typings 兩代進(jìn)化,現(xiàn)在官方推薦的方式是使用 npm 進(jìn)行管理 ...
    大樹值殤閱讀 1,015評論 0 1
  • 是什么 優(yōu)勢 搭建開發(fā)環(huán)境 就是加一個TypeScript的編譯器。在線編譯器http://www.typescr...
    4ea0af17fd67閱讀 546評論 0 2
  • 特別喜歡開會,開會就能畫畫……
    松果2016閱讀 219評論 0 2
  • 無論你去或不去, 高棉的微笑就在那里。 別說這里窮, 總把錢當(dāng)作砝碼放在天平的一端, 不去衡量,不去比較, 高棉的...
    簡單的旅程閱讀 269評論 1 1

友情鏈接更多精彩內(nèi)容