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 相关文章推荐
javascript String 对象
Apr 25 Javascript
jquery 防止表单重复提交代码
Jan 21 Javascript
JavaScript高级程序设计 阅读笔记(十七) js事件
Aug 14 Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
Nov 14 Javascript
JS实现方向键切换输入框焦点的方法
Aug 19 Javascript
浅谈Node.js之异步流控制
Oct 25 Javascript
使用vue for时为什么要key【推荐】
Jul 11 Javascript
react实现移动端下拉菜单的示例代码
Jan 16 Javascript
javascript实现倒计时效果
Feb 17 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
May 15 Javascript
js编写简易的计算器
Jul 29 Javascript
微信小程序自定义底部弹出框动画
Nov 18 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+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
PHP开发中的错误收集,不定期更新。
2011/02/03 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
php单文件版在线代码编辑器
2015/03/12 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
如何使用PHP给图片加水印
2016/10/12 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
很可爱的输入框
2008/08/03 Javascript
javascript GUID生成器实现代码
2009/10/31 Javascript
jtable列中自定义button示例代码
2013/11/21 Javascript
React利用插件和不用插件实现双向绑定的方法详解
2017/07/03 Javascript
vue 1.x 交互实现仿百度下拉列表示例
2017/10/21 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
2018/09/28 Javascript
详解Puppeteer前端自动化测试实践
2019/02/21 Javascript
浅谈Node框架接入ELK实践总结
2019/02/22 Javascript
微信小程序加载机制及运行机制图解
2019/11/27 Javascript
mac安装pytorch及系统的numpy更新方法
2018/07/26 Python
python3利用ctypes传入一个字符串类型的列表方法
2019/02/12 Python
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
Python进阶之迭代器与迭代器切片教程
2020/01/29 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
Python urllib库如何添加headers过程解析
2020/10/05 Python
5分钟快速掌握Python定时任务框架的实现
2021/01/26 Python
使用iframe+postMessage实现页面跨域通信的示例代码
2020/01/14 HTML / CSS
欧洲领先的技术商店:eibmarkt.com
2019/05/10 全球购物
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
将n个数按输入顺序的逆序排列,用函数实现
2012/11/14 面试题
家佳咖啡店创业计划书
2013/12/27 职场文书
初二物理教学反思
2014/01/29 职场文书
公务员平时考核实施方案
2014/03/11 职场文书
超市创业计划书
2014/04/24 职场文书
社区国庆节活动总结
2015/03/23 职场文书
观后感开头
2015/06/19 职场文书
2021年国漫热度排行前十,完美世界上榜,第四是美国动画作品
2022/03/18 国漫