一、TypeScript

一让虐、簡(jiǎn)介

image.png

二紊撕、環(huán)境搭建

npm install -g typescript

安裝完打開(kāi)cmd --- tsc 測(cè)試有沒(méi)有安裝成功


image.png

三、TypeScript的基本數(shù)據(jù)類型

TypeScript 原始數(shù)據(jù)類型

image.png

undefined和null是其他類型的子類型赡突,所以其他類型可以賦值成undefined和null

var str:string = "hello"
var num:number = 1
var flag:boolean = true
var un:undefined = undefined
var unl:null = null

str = null

//void用來(lái)規(guī)定函數(shù)無(wú)返回值
var callBack = function():void{
  //return 10  報(bào)錯(cuò)
}

var num2:void = 3  // error

TypeScript 中的任意值

image.png
var num:any = 1;
num = true;
num = "safd"

var num2;//沒(méi)有賦值操作对扶,就會(huì)被認(rèn)為任意值類型等價(jià)于 var num2:any
num2 = 1;
num2 = true

TypeScript 中的類型推論

image.png
/、給變量賦值初始值的時(shí)候惭缰,如果沒(méi)有指定類型浪南,根據(jù)初始值倒推類型
var b = 1
b = 2 //error

四、TypeScript的聯(lián)合類型

image.png
//通過(guò) | 來(lái)增加多種類型
var muchtype:string|number = "hello"
muchtype = 10
console.log(muchtype.toString)//用到屬性和方法的時(shí)候要注意要符合兩種類型的屬性和方法

TypeScript 中的對(duì)象類型--接口

image.png
//定義接口
interface Istate {
    name:string
    age:number
}

var obj1:Istate;
obj1 = {name:"張三"漱受,age:10}

//可選屬性
interface Istate2 {
    name:string
    age?:number // 存疑 可有可無(wú)
}
var obj2:Istate2;
obj2 = {name:"李四"络凿,age:20}
obj2 = {name:"李四"}

//屬性個(gè)數(shù)不確定的時(shí)候,any必須是任意類型
interface Istate3 {
    name:string|number,
    age?:number,
    [propName:string]:any
}
var obj3:Istate3 = {name:"張三"口四,age:10,sex:"男",isMary:true}

//只讀屬性
interface Istate4 {
    name:string,
    readonly age:number
}
var obj4:Istate4 = {name:"張三"贴唇,age:10}
obj4.name =  "李四"
obj4.age = 20 //error  readonly 設(shè)置完之后不能修改

五乳幸、TypeScript的數(shù)組類型

image.png
//數(shù)組表示法
//類型+方括號(hào)

var arr:number [] = [1,2,3]
var arr2:string [] = ["1","2","3"]
var arr3:any [] = ["2",1,true]

//數(shù)組泛型Array<elemType>表示法
var arrType:Array<number> = [1,2,3]
var arrType2:Array<string > =["1","2","3"]
var arrType3:Array<any > =["2",1,true]

//采用接口表示法(常用)
interface Istate {
    username:string,
    age:number
}

interface IArr{
    username:string,
    age:number
}
var arrType4:IArr = [{username:"張三"抓谴,age:10}]

var arrType5:Array<Istate> = [{username:"張三",age:10}]
var arrType6:Istate[] = [{username:"張三"到千,age:10}]

六昌渤、TypeScript的函數(shù)類型

image.png
//聲明式類型的函數(shù)
function funcType(name:string,age:number):number{
    return age
}
var ageNum:number = funcType("張三",18)

//函數(shù)參數(shù)不確定
function funcType(name:string,age:number,sex?:string):number{
    return age
}
var ageNum2:number = funcType2("張三",18,"男")

//函數(shù)參數(shù)的默認(rèn)值
function funcType3(name:string="張三",age:number=18):number{
    return age
}

//表達(dá)式類型函數(shù)
//不完整的約束規(guī)范
var funcType4 = function(name:string,age:number):number{
    return age
}
//完整的約束
var funcType5:(name:string,age:number)=>number = function(name:string,age:number):number{
     return age
}

interface funcType6{
    (name:string,age:number):number
}
var funcType6:funcType6 = function(name:string,age:number):number{
    return age
}

//對(duì)于聯(lián)合類型的函數(shù)憔四,可以采用重載的方式
//輸入時(shí)number,輸出也是number
//輸入時(shí)string,輸出也是string
function getValue(value:number):number;
function getValue(value:string):string;
function getValue(value:string|number):string|number{
    return value
}
let a:number = getValue(1)
let b:string = getValue("1")

七膀息、TypeScript的類型斷言

image.png

在聯(lián)合類型中要使用某一類型的屬性和方法就可以使用類型斷言

// let num:number|string = "10"
//num = 20
//console.log(num.length) error

//類型斷言  只能斷言聯(lián)合類型中存在的類型
function getAssert(name:string|number){
    //return (<string>name).length 方法一
    return (name as string).length
}

八、TypeScript的類型別名

image.png

就是把某些聯(lián)合類型單獨(dú)定義出來(lái)了赵,然后就使用這個(gè)定義的名字就可以了潜支;

type strType = string|number|boolean;
var str:strType = "10"
str = 10
str = true

//可以對(duì)于接口也采用類型 別名
interface muchType1{
    name:string
}
interface muchType2{
    age:number
}
type muchType = muchType1 | muchType2
var obj:muchType = {name: "張三"}
var obj:muchType = {age:10}
var obj:muchType =  {name:"李四",age:10}

//限制字符串的選擇
type sex = "男" | "女"
function getSex(s:sex):string{
    return s
}
getSex("男")

九、TypeScript 枚舉

image.png
//使用枚舉可以定義一些有名字的數(shù)字常量
enum Days{
    Sun,
    Mon,
    Tue,
    Wed,
    Thu,
    Fri,
    Sat
}
console.log(Days.Sun) //0
console.log(Days.Sat)  //6

console.log(Days) //枚舉類型會(huì)被編譯成一個(gè)雙向映射的對(duì)象
console.log(Day[0] === "Sun")

enum Days{
    Sun=3,
    Mon,
    Tue,
    Wed,
    Thu,
    Fri,
    Sat
}
console.log(Days.Sun) //3
console.log(Days.Sat)  //9

console.log(Days) //枚舉類型會(huì)被編譯成一個(gè)雙向映射的對(duì)象
console.log(Day[0] === "Sun")

編譯成的js


image.png

十柿汛、TypeScript 類的修飾符

image.png
class Person{
    private name = "張三"
    protected age=18
    say(){
      console.log("我的名字是"+this.name+",我的年齡為"+this.age)
    }
}

//創(chuàng)建Person的實(shí)例
//var p = new Person()
//p.say()
//private屬性只能在類的內(nèi)部進(jìn)行訪問(wèn)
//console.log(p.name) //當(dāng)一個(gè)類成員變量沒(méi)有修飾的時(shí)候冗酿,外界是可以進(jìn)行訪問(wèn)的,默認(rèn)就是public進(jìn)行修飾

//創(chuàng)建child子類
//一旦父親將屬性定義成私有的之后络断,子類就不可以進(jìn)行訪問(wèn)了
//父親的屬性定義成受保護(hù)的之后裁替,可以在子類里面進(jìn)行訪問(wèn)
class child extend Perxon{
    callParent(){
        console.log(super.age)
        super.say()
    }
    static test(){
        console.log("test")
     }
}

var c = new Child()
c.callParent()
//console.log(c.age) //error 子類繼承了父類,但沒(méi)有辦法直接獲取到父類私有的屬性或者受保護(hù)的屬性(實(shí)例的不行)
//console.log(c.say()) //子類繼承了父類貌笨,子類就可以訪問(wèn)到父類的公開(kāi)屬性或者方法弱判; 
 
console.log(child.test()) //類的靜態(tài)方法里面,是不予許用this

十一锥惋、TypeScript 泛型

image.png
//沒(méi)有確切定義返回值類型昌腰,運(yùn)行的數(shù)組每一項(xiàng)都可以是任意類型
function createArray(length:number,value:any):Array<any>{
    let arr = []
    for(var i=0;i<length;i++){
        arr[i] = value
    }
    return arr
}
createArray(3,1)

//使用泛型將其改造
//不傳的時(shí)候根據(jù)類型進(jìn)行倒推
//泛型可以用來(lái)幫助我們限定約束規(guī)范
function createArray<T>(length:number,value:T):Array<T>{
    let arr = []
    for(var i = 0;i<length;i++){
        arr[i] =  value
    }
    return arr
}

var strArry:string[] = createArray<string>(3,'1')
var numArray:number[] = createArray(3,1)


//接口當(dāng)中采用泛型
interface ICreate{
    <T>(name:string,value:T):Array<T>
}

let func:ICreate;
func = function<T>(name:string,value:T):Array<T>{
    return []
}

var strArr:number [] = func("zhangsan",3)

十二、TypeScript 泛型

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末膀跌,一起剝皮案震驚了整個(gè)濱河市遭商,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捅伤,老刑警劉巖劫流,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異丛忆,居然都是意外死亡祠汇,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)蘸际,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人徒扶,你說(shuō)我怎么就攤上這事粮彤。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵导坟,是天一觀的道長(zhǎng)屿良。 經(jīng)常有香客問(wèn)我,道長(zhǎng)惫周,這世上最難降的妖魔是什么尘惧? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮递递,結(jié)果婚禮上喷橙,老公的妹妹穿的比我還像新娘。我一直安慰自己登舞,他們只是感情好贰逾,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著菠秒,像睡著了一般疙剑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上践叠,一...
    開(kāi)封第一講書(shū)人閱讀 52,255評(píng)論 1 308
  • 那天言缤,我揣著相機(jī)與錄音,去河邊找鬼禁灼。 笑死管挟,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的匾二。 我是一名探鬼主播哮独,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼察藐!你這毒婦竟也來(lái)了皮璧?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤分飞,失蹤者是張志新(化名)和其女友劉穎悴务,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體譬猫,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡讯檐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了染服。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片别洪。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖柳刮,靈堂內(nèi)的尸體忽然破棺而出挖垛,到底是詐尸還是另有隱情痒钝,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布痢毒,位于F島的核電站送矩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏哪替。R本人自食惡果不足惜栋荸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凭舶。 院中可真熱鬧晌块,春花似錦、人聲如沸库快。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)义屏。三九已至靠汁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間闽铐,已是汗流浹背蝶怔。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留兄墅,地道東北人踢星。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像隙咸,于是被迫代替她去往敵國(guó)和親沐悦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容