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 相关文章推荐
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
Dec 22 Javascript
超级退弹代码
Jul 07 Javascript
IE6 fixed的完美解决方案
Mar 31 Javascript
如何在MVC应用程序中使用Jquery
Nov 17 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
Mar 08 Javascript
jquery div模态窗口的简单实例
May 28 Javascript
微信小程序实现图片预览功能
Jan 31 Javascript
Vue的elementUI实现自定义主题方法
Feb 23 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
Mar 13 Javascript
从0到1构建vueSSR项目之node以及vue-cli3的配置
Mar 07 Javascript
如何使用JavaScript实现栈与队列
Jun 24 Javascript
Vue实现省市区三级联动
Dec 27 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
php unset全局变量运用问题的深入解析
2013/06/17 PHP
PHP获取youku视频真实flv文件地址的方法
2014/12/23 PHP
php获取本周星期一具体日期的方法
2015/04/20 PHP
Packer 3.0 JS压缩及混淆工具 下载
2007/05/03 Javascript
JavaScript的Cookies
2008/01/16 Javascript
javascript模仿msgbox提示效果代码
2008/06/10 Javascript
Prototype Template对象 学习
2009/07/19 Javascript
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
javascript中字符串拼接需注意的问题
2010/07/13 Javascript
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
2014/05/07 Javascript
一款基jquery超炫的动画导航菜单可响应单击事件
2014/11/02 Javascript
JavaScript数组方法大全(推荐)
2016/07/05 Javascript
JavaScript实现的CRC32函数示例
2016/11/23 Javascript
TypeScript学习之强制类型的转换
2016/12/27 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
JavaScript表单验证完美代码
2017/03/02 Javascript
vue webuploader 文件上传组件开发
2017/09/23 Javascript
vue-cli axios请求方式及跨域处理问题
2018/03/28 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
微信公众平台 发送模板消息(Java接口开发)
2019/04/17 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
2020/07/16 Javascript
[15:39]教你分分钟做大人:龙骑士
2014/10/30 DOTA
Python生成随机密码的方法
2017/06/16 Python
分享一下Python数据分析常用的8款工具
2018/04/29 Python
css3通过scale()、rotate()实现放大、旋转
2020/03/19 HTML / CSS
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
2014年公务员思想汇报范文:全心全意为人民服务
2014/03/06 职场文书
文明班集体申报材料
2014/05/23 职场文书
个人总结与自我评价2015
2015/03/11 职场文书
活动费用申请报告
2015/05/15 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
python munch库的使用解析
2021/05/25 Python
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers