c#程序員對TypeScript的認(rèn)識過程
簡介
TypeScript一直發(fā)展不錯,我們公司在開發(fā)新功能時,考慮到程序的可維護(hù)性,使用了TypeScript編寫瀏覽器上的程序,我們是從零開始使用TypeScript,甚至我連javascript也是半罐子,本文描述了一個c#程序員認(rèn)識TypeScript的過程。
注:本文編寫是基于Typescript0.8版本,而且初用,可能過時,具體規(guī)范可以參考http://www.typescriptlang.org
命名空間和類
作為面向?qū)ο蟮拈_發(fā)人員思維,第一個想到的是TypeScript如何定義類,由于正好我們項目服務(wù)端(C#)的原理和客戶端(TypeScript)原理完全相同,所以這里正好用C#與TypeScript對比。
C#聲明類
using System; namespace Digiwin.Mars.VirtualUI.Engine { internal sealed class Decoder {} }
TypeScript聲明類
///<reference path="../Collections/ICollection.ts" /> module System.Erp.VirtualUI.Engine { export class Decoder {} }
首先簡單來說,都有類似命名空間的概念,一個叫namespace,一個叫module,這個就不廢話了。
其次,c#要引用其他的類,首先你需要在工程文件中引用dll,然后在文件頭上using一個命名空間(可選),但是在TypeScript中,沒有這個概念,直接引用一個文件的。
C#里類可以public、internal等等很多級別,還有sealed等修飾符,TypeScript你就忘記這些吧,加入export相當(dāng)于public,抽象,值類型什么的,這個好像沒有。
但是接口是有的。
方法和注釋
C#的方法
/// <summary> /// 解碼變更集 /// </summary> /// <param name="reader"> 一個變更集讀取器對象 </param> public void DecodeChangeSet(ChangeRecordReader reader) { //解碼上下文對象 var ctx = new DecodeContext();
TypeScript聲明方法
/** * 傳入變更集,將其解碼到當(dāng)前的對象容器。 * @param {System.Erp.VirtualUI.Engine.IChangeRecordReader} reader - 提供記錄集。 */ public Decode(reader: IChangeRecordReader): void { //解碼上下文對象 var ctx = new DecodeContext();
我們首先看到c#的xml 文檔專用注釋也是支持的,不同他使用JsDoc的規(guī)范。
普通的注釋也使用// ,這個完全和javascript相同。
在方法的聲明上,TypeScript將返回參數(shù)放在后面,對應(yīng)的,參數(shù)的類型也是放在名字后面,如果你聲明變量,也是這樣的
private _maxId: number; //在類上定義字段
var item: VirtualObject; //在方法里定義變量。
在方法的可訪問性上,支持public,這樣就可以公開還是不公開。
參數(shù)和構(gòu)造
在C#里面,我們經(jīng)常同一個名字定義多個方法,使用不同的參數(shù)類型區(qū)分,但是在javascript中不允許,所以TypeScript也不允許。
由于上面的原因,你也就能理解只能有一個構(gòu)造函數(shù)。下面是他的構(gòu)造函數(shù)例子:
constructor( objectContainer: VirtualObjectContainer, objectBinder:IObjectBinder ) { this._objectContainer = objectContainer; this._binder = objectBinder; }
基于javascript的概念,也就沒有ref out in這樣的關(guān)鍵字,但有命名方式訪問參數(shù)和可選參數(shù)。
我也沒有發(fā)現(xiàn)override關(guān)鍵字,雖然據(jù)說0.8之后新增了。
好了,更多的細(xì)節(jié)需要你慢慢研究規(guī)范文檔了,這篇文檔可以幫助你入門,使用愉快。
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
- 使用typescript開發(fā)angular模塊并發(fā)布npm包
- TypeScript學(xué)習(xí)之強(qiáng)制類型的轉(zhuǎn)換
- TypeScript 中接口詳解
- TypeScript Type Innference(類型判斷)
- Vue2 Vue-cli中使用Typescript的配置詳解
- 關(guān)于TypeScript中import JSON的正確姿勢詳解
- TypeScript入門-基本數(shù)據(jù)類型
- TypeScript 學(xué)習(xí)筆記之基本類型
- TypeScript具有的幾個不同特質(zhì)
- 關(guān)于TypeScript模塊導(dǎo)入的那些事
相關(guān)文章
javascript 操作符(~、&、|、^、<<、>>)使用案例
這篇文章主要介紹了javascript 操作符(~、&、|、^、<<、>>)使用案例,非常的全面,需要的朋友可以參考下2014-12-12JavaScript?的setTimeout與事件循環(huán)機(jī)制event-loop
這篇文章主要介紹了JavaScript?的setTimeout與事件循環(huán)機(jī)制event-loop,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-07-07js 頁面刷新location.reload和location.replace的區(qū)別小結(jié)
在實際應(yīng)用的時候,重新刷新頁面的時候,我們通常使用: location.reload() 或者是 history.go(0) 來做。下面有一些相關(guān)的內(nèi)容,大家看完了就會有更多的收獲。2009-12-12JavaScript實現(xiàn)經(jīng)緯度轉(zhuǎn)換成地址功能
這篇文章主要介紹了JavaScript實現(xiàn)經(jīng)緯度轉(zhuǎn)換成地址,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-03-03