從今天開(kāi)始,持續(xù)更新typescript入門(mén)教程系列....
目前ts越來(lái)越火,主流的前端框架伊诵,好比angular哀墓,vue 3均是采用ts來(lái)編寫(xiě),所有很多公司的項(xiàng)目都是用ts來(lái)寫(xiě)的,所有是時(shí)候認(rèn)真學(xué)習(xí)ts了
ts來(lái)源于微軟公司,越是大的公司,越是大的項(xiàng)目藐唠,越是推薦使用ts來(lái)編碼,ts是js的超集鹉究,在js上面增加一些內(nèi)容宇立,相對(duì)于js,ts具有以下的優(yōu)點(diǎn):
- 支持面向?qū)ο蠓椒ㄗ耘猓癹s實(shí)現(xiàn)面向?qū)ο笫峭ㄟ^(guò)prototype妈嘹,function實(shí)現(xiàn)的,有點(diǎn)繁瑣绍妨。ts提供了Class润脸,Interface
- 類(lèi)型檢查。ts能夠在編譯的階段就可以發(fā)現(xiàn)錯(cuò)誤他去,減少bug率毙驯。在實(shí)際開(kāi)發(fā)中,需要將ts編譯成js灾测,而且目前瀏覽器支持的是es5版本
- 自帶文檔特性爆价。通過(guò)類(lèi)型注解,很容易知道某一個(gè)參數(shù)或者變量是什么類(lèi)型
- IDE或者是編輯工具支持良好(自動(dòng)完成提示)
總的來(lái)說(shuō)ts=js+type+(一些其他特性:枚舉,接口等)
使用ts之前铭段,首先需要安裝node骤宣,安裝好node之后會(huì)自帶npm,npm是node包管理工具序愚,其可以下載一些社區(qū)常用的包憔披,我們通過(guò)npm來(lái)安裝ts編譯工具typescript , npm install typescript -g
編寫(xiě)一個(gè)ts文件:index.ts,通過(guò)下面命令行工作tsc index,.ts
,就可以將index.ts編譯成index.js,最后在瀏覽器中運(yùn)行(ts是沒(méi)法在瀏覽器中運(yùn)行的爸吮,必須進(jìn)行編譯)
var a:number
a=10
console.log(a)
上面就是定義了a的變量類(lèi)型是number類(lèi)型芬膝,如果這時(shí)候傳string類(lèi)型賦值給a,編譯器就會(huì)保存
數(shù)據(jù)類(lèi)型主要有:
- number拗胜,string蔗候,boolean,Array
示例,定義數(shù)組有兩種方法:
let myArr1:string[]=["st1","st2"]
let myArr2:Array<string>=["st1","st2"]
也可以給函數(shù)參數(shù)添加類(lèi)型限制埂软,這時(shí)如果傳入的參數(shù)個(gè)數(shù)和類(lèi)型和定義的形參不匹配,編譯時(shí)候就會(huì)報(bào)錯(cuò):
const add=(a:number,b:number)=>{
return a+b
}
console.log(add(2,4))
也可以為函數(shù)返回值添加類(lèi)型
const add=(a:number,b:number):number=>{
return a+b
}
也可以給函數(shù)加上默認(rèn)的參數(shù)纫事,如果函數(shù)的返回值是空勘畔,可以設(shè)置返回值類(lèi)型是void
const add=(a:number=8,b:number=10):void=>{
console.log(a+b)
}
也可以設(shè)置可選參數(shù),如下:這時(shí)候b可以傳可以不傳
const add=(a:number=8,b?:number):void=>{
console.log(a+b)
}
如果需要將一個(gè)變量設(shè)置為任何類(lèi)型丽惶§牌撸可以使用any,但是盡量少用any
let a:any;
a=10;
a="str"
a=[1,2,3]
如果需要設(shè)置一個(gè)變量為兩種或者更多類(lèi)型,可以使用聯(lián)合類(lèi)型的方式钾唬,|
let a:number | string
類(lèi)
很多語(yǔ)言具有面向?qū)ο蟮膶傩酝蚰模╰s,面向?qū)ο笕髮傩裕悍庋b抡秆,繼承奕巍,多態(tài)了,可以將現(xiàn)實(shí)生活中的一切內(nèi)容看成類(lèi)或者對(duì)象一個(gè)Class儒士,通過(guò)new()得到一個(gè)對(duì)象的止,一個(gè)對(duì)象有屬性和方法(方法就是對(duì)屬性進(jìn)行操作)
class Person{
// 構(gòu)造方法
constructor(fn:string,ln:string){
this.firstName=fn
this.lastName=ln
}
firstName:string;
lastName:string;
}
通過(guò)extends關(guān)鍵字,可以讓一個(gè)類(lèi)繼承已有類(lèi)的屬性和方法:
class Person{
firstName:string
lastName:string
}
class Programmer extends Person{
}
let p=new Programmer()
p.firstName='jack'
p.lastName='chen'
console.log(p)
子類(lèi)如果調(diào)用某個(gè)方法着撩,如果在子類(lèi)中已有該方法诅福,則直接調(diào)用該方法,如果沒(méi)有拖叙,則去調(diào)用父類(lèi)的方法氓润,如果強(qiáng)制調(diào)用父類(lèi)的方法,可以把this換成super
類(lèi)成員的可見(jiàn)性主要有public薯鳍,private咖气,protected
public:在類(lèi)中和類(lèi)的外面均是可以調(diào)用,默認(rèn)就是public
private:只能在類(lèi)中調(diào)用,子類(lèi)和類(lèi)外面是不能調(diào)用的采章,如果要調(diào)用私有的屬性或者方法运嗜,可以通過(guò)公有的方法來(lái)訪問(wèn),對(duì)外暴露公有的方法悯舟,子類(lèi)也是可以繼承父類(lèi)的私有的方法和屬性担租,但是必須通過(guò)父類(lèi)暴露的公有方法進(jìn)行訪問(wèn)
protected:只能在類(lèi)中或者是子類(lèi)中調(diào)用 ,即使子類(lèi)和父類(lèi)生成的對(duì)象也是不能訪問(wèn)
總的來(lái)說(shuō)權(quán)限范圍:public>protected>private
未完待續(xù)抵怎。奋救。。
<center>如果覺(jué)得本文有收獲反惕,請(qǐng)我喝杯咖啡吧尝艘,你們的支持是我最大的動(dòng)力 </center>
<div align=center><img width = '100' height ='150' src ="https://graph.baidu.com/resource/212f2cd5fea74c832764b01572346781.png"/></div>