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 相关文章推荐
关闭浏览器窗口弹出提示框并且可以控制其失效
Apr 15 Javascript
js获取json元素数量的方法
Jan 27 Javascript
jquery实现鼠标悬浮停止轮播特效
Aug 20 Javascript
一篇文章掌握RequireJS常用知识
Jan 26 Javascript
微信小程序 保留小数(toFixed)详细介绍
Nov 16 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
Dec 08 Javascript
Bootstrap实现的标签页内容切换显示效果示例
May 25 Javascript
详解vue中computed 和 watch的异同
Jun 30 Javascript
vue2.0中set添加属性后视图不能更新的解决办法
Feb 22 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
Mar 19 Javascript
js实现选项卡效果
Mar 07 Javascript
详解Anyscript开发指南绕过typescript类型检查
Sep 23 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
yum命令安装php7和相关扩展
2016/07/04 PHP
php中分页及SqlHelper类用法实例
2017/01/12 PHP
PHP 命名空间和自动加载原理与用法实例分析
2020/04/29 PHP
使用Json比用string返回数据更友好,也更面向对象一些
2011/09/13 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
阻止子元素继承父元素事件具体思路及实现
2013/05/02 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
2016/05/24 Javascript
jQuery实现可展开折叠的导航效果示例
2016/09/12 Javascript
jQuery解析返回的xml和json方法详解
2017/01/05 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
微信小程序movable view移动图片和双指缩放实例代码
2017/08/08 Javascript
解决vue的 v-for 循环中图片加载路径问题
2018/09/03 Javascript
Vue $emit $refs子父组件间方法的调用实例
2018/09/12 Javascript
django js 实现表格动态标序号的实例代码
2019/07/12 Javascript
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
Python的requests网络编程包使用教程
2016/07/11 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
pycharm在调试python时执行其他语句的方法
2018/11/29 Python
python set集合使用方法解析
2019/11/05 Python
CSS3 3D旋转rotate效果实例介绍
2016/05/03 HTML / CSS
HolidayLettings英国:预订最好的度假公寓、别墅和自助式住宿
2019/08/27 全球购物
存储过程和函数的区别
2013/05/28 面试题
J2EE中的容器都包括哪些
2013/08/21 面试题
毕业生机械建模求职信
2013/10/14 职场文书
工业自动化专业毕业生推荐信
2013/11/18 职场文书
银行委托书范本
2014/04/04 职场文书
写求职信要注意什么问题
2014/04/12 职场文书
家具公司总经理岗位职责
2014/07/08 职场文书
社区志愿者活动方案
2014/08/18 职场文书
vue 实现上传组件
2021/05/31 Vue.js
关于maven依赖 ${xxx.version}报错问题
2022/01/18 Java/Android
nginx常用配置conf的示例代码详解
2022/03/21 Servers