首頁 >web前端 >js教程 >c#程式設計師對TypeScript的認識過程_javascript技巧

c#程式設計師對TypeScript的認識過程_javascript技巧

WBOY
WBOY原創
2016-05-16 15:54:041428瀏覽

簡介

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

註:本文寫成是基於Typescript0.8版本,而且初用,可能過時,具體規範可以參考http://www.typescriptlang.org

命名空間和類別

作為物件導向的開發人員思維,第一個想到的是TypeScript如何定義類,由於正好我們專案服務端(C#)的原理和客戶端(TypeScript)原理完全相同,所以這裡正好用C#與TypeScript對比。

C#聲明類別

using System;
namespace Digiwin.Mars.VirtualUI.Engine {
internal sealed class Decoder {}
}

類型Script聲明類別

///<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相當於public,抽象,值類型什麼的,這個好像沒有。

但是介面是有的。

方法與註解

C#的方法

    /// <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之後新增了。

好了,更多的細節需要你慢慢研究規範文件了,這篇文件可以幫助你入門,使用愉快。

以上所述就是本文的全部內容了,希望大家能夠喜歡。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn