Ts Day1

官網(wǎng)文檔鏈接

typescript是javascript的超集,所以js能干的是ts都能干。ts簡(jiǎn)單理解無(wú)非就是加了類(lèi)型的js,通過(guò)tsc可以將編寫(xiě)的ts代碼轉(zhuǎn)化成js代碼,所以web app可以用ts寫(xiě),node app也可以用ts寫(xiě),只是最后要有一步代碼的轉(zhuǎn)化。

Type(類(lèi)型)

  • “js是沒(méi)有類(lèi)型的”,也就是說(shuō)一個(gè)變量在賦值之后是可以賦其他類(lèi)型的值的。
var name = 'Mike';//ok
name = 5;//ok

如果只是簡(jiǎn)單的測(cè)試,這上面的代碼是沒(méi)問(wèn)題的。但在一個(gè)大型的應(yīng)用中,一個(gè)變量應(yīng)該有它對(duì)應(yīng)的實(shí)際意義,顯然name是個(gè)名字,那么我們?cè)谥笫褂眠@個(gè)變量的地方,都期望是個(gè)字符串而不應(yīng)該給它賦值5。
在ts中,很重要的一點(diǎn)就是類(lèi)型聲明。在確定了一個(gè)變量的類(lèi)型之后,之后的使用過(guò)程中就不能修改它的類(lèi)型。

var name:string = 'Mike';//ok
name = 5;//error

在之后的那么的name的使用過(guò)程中,都要按照string類(lèi)型來(lái)處理,否則tsc就會(huì)提示你有類(lèi)型錯(cuò)誤。

  • ts中使用的類(lèi)型跟js中是一樣的,有原生類(lèi)型(boolean,number,string),數(shù)組,對(duì)象,自定義對(duì)象。
var name:string = 'Mike';
var age:number = 18;
var isLive:boolean = true;
//names數(shù)組。類(lèi)型定義就是元素的類(lèi)型后面加上個(gè)方括號(hào)
var names:string[] = ['Mike','James','Nick'];
//sayHello的類(lèi)型是一個(gè)方法,參數(shù)是一個(gè)字符串,返回值也是一個(gè)字符串
var sayHello:(name:string) => string;
sayHello = function(name:string){
  return 'Hello,'+name;
}
  • 接口(interface)是ts中獨(dú)有的用來(lái)描述‘事物外形’(shape)的技術(shù)。
interface Person{
  name:string;
  age:number;
}
var person = {
  name:'Mike',
  age:18;    
}

接口其實(shí)是不存在的,在最后導(dǎo)出的js文件中什么也看不到,它是為了類(lèi)型檢查而來(lái)的

  • 數(shù)組中所有的元素的類(lèi)型都是相同的,所以在push等操作的時(shí)候會(huì)對(duì)目標(biāo)元素的類(lèi)型進(jìn)行判斷,如果不一樣就會(huì)報(bào)錯(cuò)。這樣的好處就是如果我們要對(duì)數(shù)組的元素進(jìn)行操作,那么我們?cè)陂_(kāi)始之前就明確知道這些元素是什么類(lèi)型的,它們到底長(zhǎng)啥樣,有啥屬性和方法。
  • 有類(lèi)型就有類(lèi)型轉(zhuǎn)化。ts中類(lèi)型轉(zhuǎn)化要用明確的方式去說(shuō)明,語(yǔ)法就是:<type>,type是目標(biāo)類(lèi)型。
interface Person{
  name:string;
}
interface Man{
  name:string;
  age:number;
}
//ok.因?yàn)楹竺娴膶?duì)象符合Person接口所描述的對(duì)象外形
var person:Person = {
  name:'Mike',
  age:18
}
var man:Man = {
  name:'Mike',
  age:18
}
var aMan:Man = person;//error
var bMan:Man = <Man>person;//ok
var name:string = 'Mike';
var age:number = <number>name;//error
//雖然編譯的時(shí)候可以通過(guò),但只是說(shuō)可以通過(guò)編譯,這么用是十分危險(xiǎn)的,指代不明。
var age:number = <number><any>name;//ok
//上面用到了ts中的一個(gè)萬(wàn)能類(lèi)型any,任意的。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 20- 枚舉,枚舉原始值,枚舉相關(guān)值,switch提取枚舉關(guān)聯(lián)值 Swift枚舉: Swift中的枚舉比OC中的枚...
    iOS_恒仔閱讀 2,439評(píng)論 1 6
  • 慕課網(wǎng)@JoJozhai 老師 TypeScript入門(mén)課程分享 TypeScript入門(mén) ES5,ES6,JS,...
    shangpudxd閱讀 10,654評(píng)論 0 22
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,715評(píng)論 19 139
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile麗語(yǔ)閱讀 4,118評(píng)論 0 6
  • 倪文達(dá)獨(dú)自在客廳里,這段時(shí)間他一直心事重重,展開(kāi)自己的左手,他默默的看著,那么堅(jiān)硬和結(jié)實(shí)的手,那天就是用這只手把兒...
    魔寧閱讀 318評(píng)論 0 0

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