使用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以后新增了。

 

好了,更多的细节须要你慢慢研究规范文档了,这篇文档能够帮助你入门,使用愉快。

相关文章
相关标签/搜索