c#程序员对TypeScript的认识过程


Posted in Javascript onJune 19, 2015

简介

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

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

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
jquery 问答知识整理
Feb 11 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
Dec 03 Javascript
UpdatePanel和Jquery冲突的解决方法
Apr 01 Javascript
使用JavaScript修改浏览器URL地址栏的实现代码
Oct 21 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
May 21 Javascript
JavaScript判断textarea值是否为空并给出相应提示
Sep 04 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
Sep 05 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
Nov 22 Javascript
详解升级react-router 4 踩坑指南
Aug 14 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
Feb 26 Javascript
浅谈angularJS2中的界面跳转方法
Aug 31 Javascript
Node.js安装详细步骤教程(Windows版)详解
Sep 01 Javascript
JavaScript和JQuery的鼠标mouse事件冒泡处理
Jun 19 #Javascript
TypeScript 中接口详解
Jun 19 #Javascript
TypeScript 学习笔记之基本类型
Jun 19 #Javascript
使用Chrome浏览器调试AngularJS应用的方法
Jun 18 #Javascript
使用AngularJS创建自定义的过滤器的方法
Jun 18 #Javascript
深入讲解AngularJS中的自定义指令的使用
Jun 18 #Javascript
3个可以改善用户体验的AngularJS指令介绍
Jun 18 #Javascript
You might like
PHP 删除一个目录及目录下的所有文件的函数代码
2010/05/26 PHP
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
2010/12/02 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
初识Laravel
2014/10/30 PHP
ThinkPHP在新浪SAE平台的部署实例
2014/10/31 PHP
CodeIgniter集成smarty的方法详解
2016/05/26 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
2020/03/03 PHP
javascript jQuery $.post $.ajax用法
2008/07/09 Javascript
js tab 选项卡
2009/04/26 Javascript
JavaScript之Getters和Setters 平台支持等详细介绍
2012/12/07 Javascript
12行javascript代码绘制一个八卦图
2015/04/02 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
2015/11/17 Javascript
jQuery简单实现上下,左右滑动的方法
2016/06/01 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
浅谈Node.js:Buffer模块
2016/12/05 Javascript
js实现简单的选项卡效果
2017/02/23 Javascript
Webstorm2016使用技巧(SVN插件使用)
2018/10/29 Javascript
JS实现的点击按钮图片上下滚动效果示例
2019/01/28 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
2019/05/14 Javascript
JS利用prototype给类添加方法操作详解
2019/06/21 Javascript
js+html实现周岁年龄计算器
2019/06/25 Javascript
Element MessageBox弹框的具体使用
2020/07/27 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
Python图像灰度变换及图像数组操作
2016/01/27 Python
Python对象类型及其运算方法(详解)
2017/07/05 Python
python对配置文件.ini进行增删改查操作的方法示例
2017/07/28 Python
python中的随机函数小结
2018/01/27 Python
python实现教务管理系统
2018/03/12 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
一套.net面试题及答案
2016/11/02 面试题
大二自我鉴定范文
2013/10/05 职场文书
大型会议接待方案
2014/03/01 职场文书
奉献家乡演讲稿
2014/09/16 职场文书
2014年汽车销售工作总结
2014/12/01 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书