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 相关文章推荐
js网页中的(运行代码)功能实现思路
Feb 04 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
Dec 03 Javascript
Bootstrap入门书籍之(一)排版
Feb 17 Javascript
JavaScript中Form表单技术汇总(推荐)
Jun 26 Javascript
用js读写cookie的简单方法(推荐)
Aug 08 Javascript
JavaScript代码里的判断小结
Aug 22 Javascript
AngularJS动态添加数据并删除的实例
Feb 27 Javascript
Vue.js中 v-model 指令的修饰符详解
Dec 03 Javascript
使用 vue 实例更好的监听事件及vue实例的方法
Apr 22 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
Sep 21 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
Apr 08 Javascript
Javascript摸拟自由落体与上抛运动原理与实现方法详解
Apr 08 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
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
基于JQuery+PHP编写砸金蛋中奖程序
2015/09/08 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
php利用array_search与array_column实现二维数组查找
2019/07/08 PHP
新发现一个骗链接的方法(js读取cookies)
2012/01/11 Javascript
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
js获取当月最后一天实例代码
2013/11/19 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
深入理解JavaScript系列(39):设计模式之适配器模式详解
2015/03/04 Javascript
Bootstrap每天必学之标签与徽章
2015/11/27 Javascript
轻松实现JavaScript图片切换
2016/01/12 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
2016/08/02 Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
2017/04/22 Javascript
浅析node应用的timing-attack安全漏洞
2018/02/28 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
centos下更新Python版本的步骤
2013/02/12 Python
Python通过paramiko远程下载Linux服务器上的文件实例
2018/12/27 Python
python修改txt文件中的某一项方法
2018/12/29 Python
Python Matplotlib 基于networkx画关系网络图
2019/07/10 Python
Django使用Jinja2模板引擎的示例代码
2019/08/09 Python
python数字类型math库原理解析
2020/03/02 Python
CSS3自定义滚动条样式的示例代码
2017/08/21 HTML / CSS
中粮集团旗下食品网上购物网站:我买网
2016/09/22 全球购物
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
酒店保安员岗位职责
2014/01/31 职场文书
工伤赔偿协议书
2014/04/15 职场文书
营销部内勤岗位职责
2014/04/30 职场文书
机关搬迁方案
2014/05/18 职场文书
教师党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
淮海战役观后感
2015/06/11 职场文书
Nginx设置日志打印post请求参数的方法
2021/03/31 Servers
浅谈MySQL之select优化方案
2021/08/07 MySQL
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技