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的inputlimiter 实现字数限制功能
May 30 Javascript
jQuery多项选项卡的实现思路附样式及代码
Jun 03 Javascript
JavaScript判断IE版本型号
Jul 27 Javascript
js中 计算两个日期间的工作日的简单实例
Aug 08 Javascript
妙用Bootstrap的 popover插件实现校验表单提示功能
Aug 29 Javascript
AngulaJS路由 ui-router 传参实例
Apr 28 Javascript
js实现点击切换checkbox背景图片的简单实例
May 08 Javascript
JS开发中基本数据类型具体有哪几种
Oct 19 Javascript
layui button 按钮弹出提示窗口,确定才进行的方法
Sep 06 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
Jun 05 Javascript
typescript配置alias的详细步骤
Aug 12 Javascript
解读Vue组件注册方式
May 15 Vue.js
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
PHP5+UTF8多文件上传类
2008/10/17 PHP
PHP的简易冒泡法代码分享
2012/08/28 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
JavaScript 布尔操作符解析  &amp;&amp; || !
2012/08/10 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
js 剪切板的用法(clipboardData.setData)与js match函数介绍
2013/11/19 Javascript
angular.element方法汇总
2015/01/07 Javascript
AngularJS学习笔记之基本指令(init、repeat)
2015/06/16 Javascript
Javascript基于AJAX回调函数传递参数实例分析
2015/12/15 Javascript
原生js实现弹出层效果
2017/01/20 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
seajs中最常用的7个功能、配置示例
2017/10/10 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
2017/10/25 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
2020/08/10 Javascript
Python功能键的读取方法
2015/05/28 Python
python开发之文件操作用法实例
2015/11/13 Python
详解Python 数据库 (sqlite3)应用
2016/12/07 Python
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
通过python顺序修改文件名字的方法
2018/07/11 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
基于python实现语音录入识别代码实例
2020/01/17 Python
对tensorflow中cifar-10文档的Read操作详解
2020/02/10 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
高街生活方式全球在线商店:AZBRO
2017/08/26 全球购物
Sandro Paris美国官网:典雅别致的法国时尚服饰品牌
2017/12/26 全球购物
Waterford英国官方网站:世界上最受欢迎的优质水晶品牌
2019/08/17 全球购物
大学毕业自我评价
2014/02/02 职场文书
护理助产毕业生的求职信
2014/03/02 职场文书
《称象》教学反思
2014/04/25 职场文书
幼儿教师求职信
2014/05/24 职场文书
2014年教师节红领巾广播稿
2014/09/10 职场文书
个人事迹材料范文
2014/12/29 职场文书
劳动仲裁代理词范文
2015/05/25 职场文书
如何写好活动总结
2019/06/21 职场文书
zabbix自定义监控nginx状态实现过程
2021/11/01 Servers