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 相关文章推荐
北京奥运官方网站幻灯切换效果flash版打包下载
Jan 30 Javascript
javascript中创建对象的三种常用方法
Dec 30 Javascript
从零开始学习jQuery (十) jQueryUI常用功能实战
Feb 23 Javascript
jquery toolbar与网页浮动工具条具体实现代码
Jan 12 Javascript
javascript实现的一个随机点名功能
Aug 26 Javascript
了不起的node.js读书笔记之node的学习总结
Dec 22 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
Oct 16 Javascript
JavaScript简单计算人的年龄示例
Apr 15 Javascript
Vue最新防抖方案(必看篇)
Oct 30 Javascript
node.js中事件触发器events的使用方法实例分析
Nov 23 Javascript
微信小程序实现日历小功能
Nov 18 Javascript
Vue组件化(ref,props, mixin,.插件)详解
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
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
php中Snoopy类用法实例
2015/06/19 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
2015/11/23 PHP
php 如何禁用eval() 函数实例详解
2016/12/01 PHP
showModelessDialog()使用详解
2006/09/21 Javascript
javascript函数中参数传递问题示例探讨
2014/07/31 Javascript
javascript框架设计读书笔记之数组的扩展与修复
2014/12/02 Javascript
javascript通过元素id和name直接取得元素的方法
2015/04/28 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
jQuery实现的简单拖拽功能示例
2016/09/13 Javascript
js中通过getElementsByName访问name集合对象的方法
2016/10/31 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
2019/06/18 jQuery
浅析TypeScript 命名空间
2020/03/19 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
2020/09/16 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
python 构造三维全零数组的方法
2018/11/12 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
Python算法中的时间复杂度问题
2019/11/19 Python
python实现输入的数据在地图上生成热力图效果
2019/12/06 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
python 监控服务器是否有人远程登录(详细思路+代码)
2020/12/18 Python
斯洛伐克家具和时尚装饰品购物网站:Butlers.sk
2019/09/08 全球购物
size?荷兰官方网站:英国高级运动鞋精品店
2020/07/24 全球购物
Java程序员面试题
2016/09/27 面试题
销售业务实习自我鉴定
2013/09/23 职场文书
营销专业应届生求职信
2013/11/26 职场文书
小区门卫岗位职责
2013/12/31 职场文书
欢迎新生标语
2014/10/06 职场文书
2015年公务员个人工作总结
2015/04/24 职场文书
2016入党积极分子考察评语
2015/12/01 职场文书
小学记事作文之200字
2019/08/06 职场文书
pytorch MSELoss计算平均的实现方法
2021/05/12 Python
浅析Redis Sentinel 与 Redis Cluster
2021/06/24 Redis
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL