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 ajaxsubmit上传图片实现代码
Nov 04 Javascript
javascript学习笔记(十二) RegExp类型介绍
Jun 20 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
Jan 29 Javascript
利用JS实现页面删除并重新排序功能
Dec 09 Javascript
浅谈react 同构之样式直出
Nov 07 Javascript
用ES6写全屏滚动插件的示例代码
May 02 Javascript
Vue数据双向绑定原理及简单实现方法
May 18 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
Aug 05 Javascript
详解微信小程序input标签正则初体验
Aug 18 Javascript
解决jQuery使用append添加的元素事件无效的问题
Aug 30 jQuery
JS实现水平遍历和嵌套递归操作示例
Aug 15 Javascript
vue路由守卫,限制前端页面访问权限的例子
Nov 11 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实现 使用PHP数组内部指针操作函数
2010/10/12 PHP
整理的9个实用的PHP库简介和下载
2010/11/09 PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
PHP也能干大事之PHP中的编码解码详解
2015/04/20 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
2020/04/13 PHP
如何利用PHP实现上传图片功能详解
2020/09/24 PHP
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
js实现可折叠展开的手风琴菜单效果
2015/09/07 Javascript
js操作数组函数实例小结
2015/12/10 Javascript
JS实现获取剪贴板内容的方法
2016/06/21 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
详解nodejs 配置文件处理方案
2019/01/02 NodeJs
微信小程序官方动态自定义底部tabBar的例子
2019/09/04 Javascript
原生javascript制作贪吃蛇小游戏的方法分析
2020/02/26 Javascript
[48:48]完美世界DOTA2联赛PWL S3 Magama vs GXR 第一场 12.19
2020/12/24 DOTA
Python基础之函数用法实例详解
2014/09/10 Python
Python数据结构之Array用法实例
2014/10/09 Python
python中lambda()的用法
2017/11/16 Python
Python实现字符串匹配算法代码示例
2017/12/05 Python
python实现搜索文本文件内容脚本
2018/06/22 Python
Python pygorithm模块用法示例【常见算法测试】
2018/08/16 Python
Python实现搜索算法的实例代码
2020/01/02 Python
pytorch进行上采样的种类实例
2020/02/18 Python
Python爬虫程序架构和运行流程原理解析
2020/03/09 Python
python实现梯度下降和逻辑回归
2020/03/24 Python
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
HTML5单页面手势滑屏切换原理
2016/03/21 HTML / CSS
斯洛伐克家具和时尚装饰品购物网站:Butlers.sk
2019/09/08 全球购物
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
应届生体育教师自荐信
2013/10/03 职场文书
五好党支部事迹材料
2014/02/06 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
撤诉申请书法院范本
2015/05/18 职场文书
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB