TypeScript學(xué)習(xí)筆記
TypeScript 是一種由微軟開發(fā)的自由和開源的編程語言,它是 JavaScript 的一個(gè)超集,擴(kuò)展了 JavaScript 的語法。
TypeScript是為開發(fā)大型應(yīng)用而設(shè)計(jì)的,并且TypeScript可轉(zhuǎn)譯成JavaScript。由于TypeScript是JavaScript的嚴(yán)格超集,任何現(xiàn)有的JavaScript程式都是合法的TypeScript程序。
安裝 Typescript
Typescript 官網(wǎng)地址: https://www.typescriptlang.org/zh/
使用 nvm 來管理 node 版本: https://github.com/nvm-sh/nvm
安裝 Typescript:
npm install -g typescript
使用 tsc 全局命令:
// 查看 tsc 版本
tsc -v
// 編譯 ts 文件
tsc fileName.ts
數(shù)據(jù)類型
原始數(shù)據(jù)類型
Typescript 文檔地址:Basic Types
Javascript 類型分類:
原始數(shù)據(jù)類型 - primitive values:
- Boolean
- Null
- Undefined
- Number
- BigInt
- String
- Symbol
let isDone: boolean = false
// 接下來來到 number,注意 es6 還支持2進(jìn)制和8進(jìn)制,讓我們來感受下
let age: number = 10
let binaryNumber: number = 0b1111
// 之后是字符串,注意es6新增的模版字符串也是沒有問題的
let firstName: string = 'viking'
let message: string = `Hello, ${firstName}, age is ${age}`
// 還有就是兩個(gè)奇葩兄弟兩,undefined 和 null
let u: undefined = undefined
let n: null = null
// 注意 undefined 和 null 是所有類型的子類型。也就是說 undefined 類型的變量,可以賦值給 number 類型的變量:
let num: number = undefined
any 類型
let notSure: any = 4
notSure = 'maybe it is a string'
notSure = 'boolean'
// 在任意值上訪問任何屬性都是允許的:
notSure.myName
// 也允許調(diào)用任何方法:
notSure.getName()
Array 和 Tuple
Typescript 文檔地址:Array 和 Tuple
//最簡單的方法是使用「類型 + 方括號(hào)」來表示數(shù)組:
let arrOfNumbers: number[] = [1, 2, 3, 4]
//數(shù)組的項(xiàng)中不允許出現(xiàn)其他的類型:
//數(shù)組的一些方法的參數(shù)也會(huì)根據(jù)數(shù)組在定義時(shí)約定的類型進(jìn)行限制:
arrOfNumbers.push(3)
arrOfNumbers.push('abc')
// 元祖的表示和數(shù)組非常類似,只不過它將類型寫在了里面 這就對(duì)每一項(xiàng)起到了限定的作用
let user: [string, number] = ['viking', 20]
//但是當(dāng)我們寫少一項(xiàng) 就會(huì)報(bào)錯(cuò) 同樣寫多一項(xiàng)也會(huì)有問題
user = ['molly', 20, true]
interface 接口
Typescript 文檔地址:Interface
Duck Typing 概念:
如果某個(gè)東西長得像鴨子,像鴨子一樣游泳,像鴨子一樣嘎嘎叫,那它就可以被看成是一只鴨子。
// 我們定義了一個(gè)接口 Person
interface Person {
name: string;
age: number;
}
// 接著定義了一個(gè)變量 viking,它的類型是 Person。這樣,我們就約束了 viking 的形狀必須和接口 Person 一致。
let viking: Person ={
name: 'viking',
age: 20
}
//有時(shí)我們希望不要完全匹配一個(gè)形狀,那么可以用可選屬性:
interface Person {
name: string;
age?: number;
}
let viking: Person = {
name: 'Viking'
}
//接下來還有只讀屬性,有時(shí)候我們希望對(duì)象中的一些字段只能在創(chuàng)建的時(shí)候被賦值,那么可以用 readonly 定義只讀屬性
interface Person {
readonly id: number;
name: string;
age?: number;
}
viking.id = 9527
版權(quán)聲明:
作者:applek
鏈接:http://www.yydfqli.cn/typescriptnode.html
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載。
THE END