使用TypeScript開發程序

簡介

TypeScript一直髮展不錯,咱們公司在開發新功能時,考慮到程序的可維護性,使用了TypeScript編寫瀏覽器上的程序,咱們是從零開始使用TypeScript,甚至我連javascript也是半罐子,本文描述了一個c#程序員認識TypeScript的過程。javascript

注:本文編寫時,基於Typescript0.8版本,並且初用,可能過期,具體規範能夠參考http://www.typescriptlang.orgjava

命名空間和類

做爲面向對象的開發人員思惟,第一個想到的是TypeScript如何定義類,因爲正好咱們項目服務端(C#)的原理和客戶端(TypeScript)原理徹底相同,因此這裏正好用C#與TypeScript對比。程序員

C#聲明類typescript

using System;

namespace Digiwin.Mars.VirtualUI.Engine {

internal sealed class Decoder {}

}

 

TypeScript聲明類c#

///<reference path="../Collections/ICollection.ts" />

 

module System.Erp.VirtualUI.Engine {

export class Decoder {}

}

 

 

首先簡單來講,都有相似命名空間的概念,一個叫namespace,一個叫module,這個就不廢話了。瀏覽器

其次,c#要引用其餘的類,首先你須要在工程文件中引用dll,而後在文件頭上using一個命名空間(可選),可是在TypeScript中,沒有這個概念,直接引用一個文件的。ide

C#裏類能夠public、internal等等不少級別,還有sealed等修飾符,TypeScript你就忘記這些吧,加入export至關於public,抽象,值類型什麼的,這個好像沒有。函數

可是接口是有的。this

方法和註釋

C#的方法spa

        /// <summary>
        ///   解碼變動集
        /// </summary>
        /// <param name="reader"> 一個變動集讀取器對象 </param>
        public void DecodeChangeSet(ChangeRecordReader reader) {
            //解碼上下文對象
            var ctx = new DecodeContext();

 

 

TypeScript聲明方法

        /**
         * 傳入變動集,將其解碼到當前的對象容器。
         * @param {System.Erp.VirtualUI.Engine.IChangeRecordReader} reader - 提供記錄集。
         */

        public Decode(reader: IChangeRecordReader): void {
            //解碼上下文對象
            var ctx = new DecodeContext();

 

 

咱們首先看到c#的xml 文檔專用註釋也是支持的,不一樣他使用JsDoc的規範。

普通的註釋也使用// ,這個徹底和javascript相同。

在方法的聲明上,TypeScript將返回參數放在後面,對應的,參數的類型也是放在名字後面,若是你聲明變量,也是這樣的

private _maxId: number; //在類上定義字段

var item: VirtualObject; //在方法裏定義變量。

在方法的可訪問性上,支持public,這樣就能夠公開仍是不公開。

 

參數和構造

在C#裏面,咱們常常同一個名字定義多個方法,使用不一樣的參數類型區分,可是在javascript中不容許,因此TypeScript也不容許。

因爲上面的緣由,你也就能理解只能有一個構造函數。下面是他的構造函數例子:

        constructor(

            objectContainer: VirtualObjectContainer,

            objectBinder:IObjectBinder

        ) {

            this._objectContainer = objectContainer;

            this._binder = objectBinder;

        }

 

 

基於javascript的概念,也就沒有ref out in這樣的關鍵字,但有命名方式訪問參數和可選參數。

我也沒有發現override關鍵字,雖然聽說0.8以後新增了。

 

好了,更多的細節須要你慢慢研究規範文檔了,這篇文檔能夠幫助你入門,使用愉快。

相關文章
相關標籤/搜索