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 相关文章推荐
你需要知道的JavsScript可以做什么?
Jun 29 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
Jul 20 Javascript
jWiard 基于JQuery的强大的向导控件介绍
Oct 28 Javascript
node.js中的fs.writeFileSync方法使用说明
Dec 14 Javascript
jQuery中before()方法用法实例
Dec 25 Javascript
JavaScript中实现Map的示例代码
Sep 09 Javascript
Bootstrap每天必学之媒体对象
Nov 30 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
Aug 03 Javascript
微信小程序中用WebStorm使用LESS
Mar 08 Javascript
node.js文件上传重命名以及移动位置的示例代码
Jan 19 Javascript
微信小程序中上传图片并进行压缩的实现代码
Aug 28 Javascript
angular异步验证防抖踩坑实录
Dec 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内置过滤器FILTER使用实例
2014/06/25 PHP
PHP框架Swoole定时器Timer特性分析
2014/08/19 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
jQuery + Flex 通过拖拽方式动态改变图片的代码
2011/08/03 Javascript
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
jquery 追加元素append、prepend、before、after用法与区别分析
2016/12/02 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
javascript常用的设计模式
2017/02/09 Javascript
一个简易时钟效果js实现代码
2020/03/25 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
2019/07/21 Javascript
JavaScript实现电灯开关小案例
2020/03/30 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
[00:12]DAC2018 no[o]ne亮相SOLO赛 他是否如他的id一样无人可挡?
2018/04/06 DOTA
Python批量按比例缩小图片脚本分享
2015/05/21 Python
python实现电子产品商店
2019/02/26 Python
在Pycharm中使用GitHub的方法步骤
2019/06/13 Python
django 2.2和mysql使用的常见问题
2019/07/18 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
中国综合网上购物商城:苏宁易购
2016/08/09 全球购物
挪威户外活动服装和装备购物网站:Bergfreunde挪威
2016/10/20 全球购物
计算机网络专业个人的自我评价
2013/10/17 职场文书
高校教师自荐信范文
2014/03/13 职场文书
成龙洗发水广告词
2014/03/14 职场文书
保卫钓鱼岛口号
2014/06/20 职场文书
领导干部作风建设自查报告
2014/10/23 职场文书
暑假安全保证书
2015/02/28 职场文书
活动经费申请报告
2015/05/15 职场文书
2016年第十九届推普周活动总结
2016/04/06 职场文书
2019年消防宣传标语集锦
2019/11/21 职场文书
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
2021/11/27 Vue.js
《传颂之物 虚伪的假面》BD发售宣传CM公开
2022/04/04 日漫