zoukankan      html  css  js  c++  java
  • TypeScript开发程序

     

     

    简介

    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 {}
    
    }
    复制代码

     

    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相当于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之后新增了。

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

    推荐一款作图神器:ProcessOn

     

        本人近日发现一款作图神器:ProcessOn 它是一款在线的作图工具,完全国产,前台是用HTML5  Canvas加javascript做绘图,后台用java实现数据处理和图片生成, 整站UI基本类似谷歌docs,整体给我的感觉很炫,也很舒服,我寻找到他的团队了解了一下,也是几个人的小团队,开发用了近2年的时间,他们表示ProcessOn会永久免费,目前正在创业初期,个人感觉,东西挺好,但没看出来怎么盈利(貌似我想多了..)。接下来就给大家详细介绍一下这款作图神器。

    整个网站最核心的就是它的设计器,上面也说了就是用HTML5加javascript实现的,体验上确实很谷歌的产品很相似,当然它是不需要下载的,因为免费,所以自然没有盗版之说。整个设计器左边是原型图库,右侧是画布,操作就是从左侧图形库中拖出圆形图放到画布即可,鼠标放到图形旁边自动变成十字架,按住左键自动出现连接线,整个操作很顺畅、简单。常规的改变图形大小、背景颜色等都是有,基本就是活生生的在线版Visio(但是比Visio好用很多)。

     

    www.ProcessOn.com

    ProcessOn还有一个比较强悍的功能就是在线实时协作,就是说支持多人同时对一个文件进行编辑(还可以聊天),这个技术也是HTML5技术实现的,很多时候做一个完整文件可能跨部门或者跨阶层,很多是自己不了解不熟悉的,当然就需要相关人员来负责出来,现在也有一些类在线协作的应用出现,例如国内的Teambition就是专门项目协作管理的,在这里不多说,可以自行了解一下。

     

    ProcessOn的社交体系以及小组在这里就不过多介绍了,基本和国内见到差不多,它有一个图库栏目。数据全部来自用户分享的作品,有些图还是很有价值的。其他就没什么特色了(或许是我还没发现)。好吧,我说完了。

     ProcessOn官方给网站 www.processon.com

  • 相关阅读:
    jsp转向
    什么是 XDoclet?
    tomcat中的几点配置说明
    mysql5问题
    POJ 3734 Blocks
    POJ 2409 Let it Bead
    HDU 1171 Big Event in HDU
    POJ 3046 Ant Counting
    HDU 2082 找单词
    POJ 1286 Necklace of Beads
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3370778.html
Copyright © 2011-2022 走看看