<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
TypeScript 是近幾年被火爆的應用了,這讓大家產生了一個錯覺:這麼多的擁護者,難道TypeScript是一個新的語言?
TypeScript是微軟公司開發和維護的一種物件導向的程式語言。它是JavaScript的超集,包含其所有元素。
TypeScript完全遵循OOPS的概念,在TSC(TypeScript編譯器)的幫助下,我們可以將TypeScript程式碼(.ts檔案)轉換成JavaScript(.js檔案)
TypeScript是JavaScript的超集
2010年,Anders Hejlsberg(TypeScript的建立者)開始在微軟開發TypeScript,並於2012年向公眾釋出了TypeScript的第一個版本(TypeScript 0.8)。儘管TypeScript的釋出受到了全世界許多人的稱讚,但是由於缺少主要ide的支援,它並沒有被JavaScript社群主要採用。
TypeScript的第一個版本(TypeScript 0.8)於2012年10月釋出。
最新版本的Typescript(Typescript 3.0)於2018年7月釋出,您可以在這裡下載最新版本!
TypeScript包含一組非常好的物件導向程式設計(OOP)特性,這些特性有助於維護健壯和乾淨的程式碼;這提高了程式碼質量和可維護性。這些OOP特性使TypeScript程式碼非常整潔和有組織性。
例如:
class CustomerModel { customerId: number; companyName: string; contactName: string; country: string; } class CustomerOperation{ addCustomer(customerData: CustomerModel) : number { // 新增使用者 let customerId = 5;// 儲存後返回的ID return customerId; } }
TypeScript支援介面、泛型、繼承和方法存取修飾符。
(1)介面
interface ITax { taxpayerId: string; calculateTax(): number; } class IncomeTax implements ITax { taxpayerId: string; calculateTax(): number { return 10000; } } class ServiceTax implements ITax { taxpayerId: string; calculateTax(): number { return 2000; } }
(2)存取修飾符
class Customers{ public companyname:string; private country:string; }
顯示一個公共變數和一個私有變數
(3)繼承
class Employee{ Firstname:string;}class Company extends Employee { Department:string; Role:string private AddEmployee(){ this.Department="myDept"; this.Role="Manager"; this.FirstName="Test"; }}class Employee{ Firstname:string; } class Company extends Employee { Department:string; Role:string private AddEmployee(){ this.Department="myDept"; this.Role="Manager"; this.FirstName="Test"; } }
(4)泛型
function identity<T> (arg: T): T { return arg; } // 顯示泛型實現的範例 let output = identity <string>("myString"); let outputl = identity <number> (23);
(5)強/靜態型別
TypeScript不允許將值與不同的資料型別混合。如果違反了這些限制,就會丟擲錯誤。因此,在宣告變數時必須定義型別,並且除了在JavaScript中非常可能定義的型別之外,不能分配其他值。
例如:
let testnumber: number = 6; testnumber = "myNumber"; // 這將引發錯誤 testnumber = 5; // 這樣就可以了
如果我們不遵循任何程式語言的正確語法和語意,那麼編譯器就會丟擲編譯時錯誤。在刪除所有語法錯誤或偵錯編譯時錯誤之前,它們不會讓程式執行一行程式碼。TypeScript也是如此。
例如:
let isDone: boolean = false; isDone = "345"; // 這將引發錯誤 isDone = true; // 這樣就可以了
TypeScript是JavaScript的包裝器,因此可以使用幫助類來減少程式碼。Typescript中的程式碼更容易理解。
介面、類等為程式碼提供可讀性。由於程式碼是用類和介面編寫的,因此更有意義,也更易於閱讀和理解。
舉例:
class Greeter { private greeting: string; constructor (private message: string) { this.greeting = message; } greet() { return "Hello, " + this.greeting; } }
JavaScript 程式碼:
var Greeter = (function () { function Greeter(message) { this.greeting = message; } Greeter.prototype.greet = function () { return "Hello, " + this.greeting; }; return Greeter; })();
Typescript與JavaScript庫相容,比如 underscore.js,Lodash等。它們有許多內建且易於使用的功能,使開發更快。
TypeScript程式碼由純JavaScript程式碼以及特定於TypeScript的某些關鍵字和構造組成。
但是,編譯TypeScript程式碼時,它會轉換為普通的JavaScript。
這意味著生成的JavaScript可以與任何支援JavaScript的瀏覽器一起使用。
隨著TypeScript程式碼基的增長,組織類和介面以獲得更好的可維護性變得非常重要。
TypeScript模組允許您這樣做。模組是程式碼的容器,可以幫助您以整潔的方式組織程式碼。
從概念上講,您可能會發現它們類似於.NET名稱空間。
例如:
module Company { class Employee { } class EmployeeHelper { targetEmployee: Employee; } export class Customer { } } var obj = new Company.Customer();
Typescript是ES6的一個超集,所以ES6的所有特性它都有。另外還有一些特性,比如它支援通常稱為lambda函數的箭頭函數。ES6引入了一種稍微不同的語法來定義匿名函數,稱為胖箭頭(fat arrow)語法。
舉例:
setTimeout(() => { console.log("setTimeout called!") }, 1000);
TypeScript在過去幾年裡越來越流行。也許TypeScript流行的決定性時刻是Angular2正式轉換到TS的時候,這是一個雙贏的局面。
它減少了諸如空處理、未定義等錯誤。強型別特性,通過適當的型別檢查限制開發人員,來編寫特定型別的程式碼。
TypeScript允許您定義過載函數。這樣,您可以根據引數呼叫函數的不同實現。但是,請記住,TypeScript函數過載有點奇怪,需要在實現期間進行型別檢查。這種限制是由於TypeScript程式碼最終被編譯成純JavaScript,而JavaScript不支援真正意義上的函數過載概念。
例如:
class functionOverloading{ addCustomer(custId: number); addCustomer(company: string); addCustomer(value: any) { if (value && typeof value == "number") { alert("First overload - " + value); } if (value && typeof value == "string") { alert("Second overload - " + value); } } }
在TypeScript中定義的類可以有建構函式。建構函式通常通過將預設值設定為其屬性來完成初始化物件的工作。建構函式也可以像函數一樣過載。
例如:
export class SampleClass{ private title: string; constructor(public constructorexample: string){ this.title = constructorexample; } }
用TypeScript編寫的程式碼很容易偵錯。
TypeScript始於JavaScript,止於JavaScript。Typescript採用JavaScript中程式的基本構建塊。為了執行的目的,所有型別指令碼程式碼都轉換為其JavaScript等效程式碼。
例如:
class Greeter { greeting: string; constructor (message: string) { this.greeting = message; } greet() { return "Hello, " + this.greeting; } }
JavaScript 程式碼:
var Greeter = (function () { function Greeter(message) { this.greeting = message; } Greeter.prototype.greet = function () { return "Hello, " + this.greeting; }; return Greeter; })();
TypeScript可以跨瀏覽器、裝置和作業系統移植。它可以在JavaScript執行的任何環境中執行。與對應的指令碼不同,TypeScript不需要專用的VM或特定的執行時環境來執行。
以上就是Web應用開發TypeScript使用詳解的詳細內容,更多關於Web開發TypeScript使用的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45