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插件iScroll实现下拉刷新,滚动翻页特效
Jun 22 Javascript
基于jQuery实现左右图片轮播(原理通用)
Dec 24 Javascript
JavaScript+html5 canvas实现本地截图教程
Apr 16 Javascript
JavaScript编码风格指南(中文版)
Aug 26 Javascript
Node.js使用Express.Router的方法
Nov 14 Javascript
webpack打包并将文件加载到指定的位置方法
Feb 22 Javascript
vue中如何让子组件修改父组件数据
Jun 14 Javascript
node删除、复制文件或文件夹示例代码
Aug 13 Javascript
微信小程序 组件的外部样式externalClasses使用详解
Sep 06 Javascript
jQuery表单校验插件validator使用方法详解
Feb 18 jQuery
详谈Object.defineProperty 及实现数据双向绑定
Jul 18 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
Sep 25 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下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
php截取后台登陆密码的代码
2012/05/05 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
node.js chat程序如何实现Ajax long-polling长链接刷新模式
2012/03/13 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
2013/06/14 Javascript
js获取当前日期时间及其它日期操作汇总
2016/03/08 Javascript
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
jQuery实现的自定义轮播图功能详解
2018/12/28 jQuery
微信小程序实现的日期午别医生排班表功能示例
2019/01/09 Javascript
vue实现公共方法抽离
2020/07/31 Javascript
不依任何赖第三方,单纯用vue实现Tree 树形控件的案例
2020/09/21 Javascript
[44:22]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第一场 11.01
2020/11/02 DOTA
python字典多条件排序方法实例
2014/06/30 Python
Python实现子类调用父类的方法
2014/11/10 Python
python使用super()出现错误解决办法
2017/08/14 Python
python中字符串变二维数组的实例讲解
2018/04/03 Python
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
Python第三方库h5py_读取mat文件并显示值的方法
2019/02/08 Python
Python调用OpenCV实现图像平滑代码实例
2020/06/19 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
2020/07/13 Python
美国著名手表网站:Timepiece
2017/11/15 全球购物
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
大学生活学习的自我评价
2013/12/03 职场文书
幼儿园母亲节活动方案
2014/03/10 职场文书
《会走路的树》教后反思
2014/04/19 职场文书
最新优秀教师个人先进事迹材料
2014/05/06 职场文书
物流管理专业自荐信
2014/06/23 职场文书
2014学校领导四风问题对照检查材料思想汇报
2014/09/22 职场文书
群众路线专项整治工作情况报告
2014/10/28 职场文书
安全隐患整改报告
2014/11/06 职场文书
2014年纠风工作总结
2014/12/08 职场文书
2016元旦主持人经典开场白台词
2015/12/03 职场文书
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
2022/04/06 Vue.js