-
typescript類型
查看全部 -
typescript類型
查看全部 -
安裝nodejs.org下載相應(yīng)版本
npm install -g typescrit
node -v
tsc -v
編譯ts文件
tsc main.ts
執(zhí)行ts文件
node main.js查看全部 -
元組:固定長度,固定類型的特殊數(shù)組,用push會(huì)突破長度限制,但需要在約定類型內(nèi)
let person = [1, 'abc']:這種不屬于元組,是屬于聯(lián)合類型數(shù)組
let person:(number, string)[] = ['abc', 1, true]
查看全部 -
設(shè)置變量類型后,重新賦值其他類型會(huì)提示錯(cuò)誤:類型boolean不能賦值給string
let isTrue = true
// isTrue = 'abc' ts報(bào)錯(cuò)
查看全部 -
通過使用泛型 在使用的時(shí)候才指定類型,得到不同類型的函數(shù)
const makeTuple = <T = number, U>(x: T, y: U): (T | U)[] => [x, y]
const v1: (number, string)[] = <number, string)makeTuple(1, 'one')
查看全部 -
一個(gè)文件就可以稱為一個(gè)模塊,通過export到出外部使用??蓪lass封裝成一個(gè)模塊導(dǎo)出
查看全部 -
class類是緊密相關(guān)的屬性和函數(shù)的集合
避免外部直接操作class屬性,就需要使用class訪問修飾符加以限制
設(shè)置為private屬性后可以通過添加get/set函數(shù)在外部訪問,賦值時(shí)可通過set函數(shù)進(jìn)行校驗(yàn)
私有熟悉private通常用下劃線表示_key,interface中可直接用key:number聲明
查看全部 -
ts的優(yōu)勢(shì)
1. 功能相同的參數(shù)包裝成對(duì)象作為整體傳入
2. 通過校驗(yàn)參數(shù)類型add(a: number, b: number),規(guī)避了add'1'+'2'='12'的風(fēng)險(xiǎn)
3. 通過校驗(yàn)對(duì)象參數(shù),約束傳參對(duì)象,規(guī)避了隨意傳遞一個(gè)對(duì)象參數(shù)導(dǎo)致報(bào)錯(cuò)問題
封裝的聚合規(guī)則:高內(nèi)聚,低耦合,可用class將功能相近的代碼組合在一起
高內(nèi)聚:功能相關(guān)的事物,應(yīng)該放在同一集合中,形成一個(gè)模塊
低耦合:模塊之間互相獨(dú)立,不同模塊之間保持低耦合的狀態(tài)
查看全部 -
休息休息
收拾收拾
查看全部 -
Generics 泛型
類型<> 泛型
數(shù)據(jù)的模板?
通過使用泛型 在使用的時(shí)候才指定類型,得到不同類型的函數(shù)
let makeTuble = <T, Y = number>(x: T, y: Y) => [x, y];
makeTuble<number, string>(2, '3')
查看全部 -
Access Modifier 訪問修飾符
class里面沒有寫訪問修飾符的都是public屬性
public 公有屬性
?
在外部可以修改
private 私有屬性
在外部無法訪問,且interface里面也不可以定義
ts里面有懶人包可以設(shè)置getter setter
interface也比較好使用 私有成員變量
查看全部 -
object
使用object類型時(shí)內(nèi)部結(jié)構(gòu)并不清晰,不會(huì)對(duì)代碼類型校驗(yàn)有任何幫助
相當(dāng)于指定了一個(gè){},使用幾率較少
Interface
interface Point {
????x: number,
? ? y: number
} // 高內(nèi)聚 (把相關(guān)聯(lián)的模塊寫在一起),低耦合
class?
緊密相關(guān)的屬性和函數(shù)的集合
interface Ipoint {
x: number,
y: number,
drawPoint: ()=> void;
getDistance: (p: Ipoint) => number;
}
class? Point implements Ipoint {
????x: number;
? ? y: number;
? ??drawPoint = ()=>{
????????????
????}
? ? getDistance = (p: Ipoint) => {
????????????return Math.pow(p.x - this.x, 2) +? Math.pow(p.y - this.y, 2)
????}
}
通過構(gòu)造函數(shù)對(duì)class值進(jìn)行初始化和啟用默認(rèn)值,javascript不支持重載,有且僅有一個(gè)構(gòu)造函數(shù)
ps:構(gòu)造函數(shù)的參數(shù)加上關(guān)鍵字public,private,?
?
查看全部 -
函數(shù)類型
let log1 = function (message) {
????console.log(message);
}
let log2 = (message) => console.log(message);
與javascript寫法基本類似,區(qū)別就是可以指定參數(shù)變量類型和返回?cái)?shù)據(jù)類型
let log3 = (message: string) => console.log(message);
// 通過問號(hào)表示可選性,不確定的都放在后面
let log4 = (message?: string) => console.log(message);
查看全部 -
類型斷言 (類型適配) Type Assertions
明確告訴ts進(jìn)行類型適配 告訴它變量現(xiàn)在就是這種類型
有兩種方式
1.? <string>message
2. as 關(guān)鍵詞
查看全部
舉報(bào)