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中dom操作和事件的实例学习-表单验证
Nov 30 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
Aug 02 Javascript
在jquery中combobox多选的不兼容问题总结
Dec 24 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
浅谈JavaScript对象的创建方式
Jun 13 Javascript
微信小程序 欢迎界面开发的实例详解
Nov 30 Javascript
jq stop()和:is(:animated)的用法及区别(详解)
Feb 12 Javascript
Vue编程式跳转的实例代码详解
Jul 10 Javascript
在Vue环境下利用worker运行interval计时器的步骤
Aug 01 Javascript
40行代码把Vue3的响应式集成进React做状态管理
May 20 Javascript
基于element-ui对话框el-dialog初始化的校验问题解决
Sep 11 Javascript
OpenLayers3实现鼠标移动显示坐标
Sep 25 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 substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
2011/12/16 PHP
让codeigniter与swfupload整合的最佳解决方案
2014/06/12 PHP
php从文件夹随机读取文件的方法
2015/06/01 PHP
javascript getElementsByName()的用法说明
2009/07/31 Javascript
jQuery中使用了document和window哪些属性和方法小结
2011/09/13 Javascript
js中this的用法实例分析
2015/01/10 Javascript
jQuery模拟新浪微博首页滚动效果的方法
2015/03/11 Javascript
JavaScript实现将UPC转换成ISBN的方法
2015/05/26 Javascript
javascript移动开发中touch触摸事件详解
2016/03/18 Javascript
jQuery插件HighCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/15 Javascript
jQuery实现拖动效果的实例代码
2017/06/25 jQuery
详解vue前后台数据交互vue-resource文档
2017/07/19 Javascript
Node.js中sequelize时区的配置方法
2017/12/10 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
vue源码学习之Object.defineProperty 对数组监听
2018/05/30 Javascript
React SSR样式及SEO的实践
2018/10/22 Javascript
vue路由--网站导航功能详解
2019/03/29 Javascript
jquery将json转为数据字典的实例代码
2019/10/11 jQuery
jquery获取input输入框中的值
2019/11/13 jQuery
js对象简介与基本用法示例
2020/03/13 Javascript
[20:30]职业巡回赛回顾
2018/08/09 DOTA
Python3.6.0+opencv3.3.0人脸检测示例
2018/05/25 Python
Python中的groupby分组功能的实例代码
2018/07/11 Python
Django添加sitemap的方法示例
2018/08/06 Python
django实现更改数据库某个字段以及字段段内数据
2020/03/31 Python
灵活运用CSS3特性绘制简易版围棋效果
2016/09/28 HTML / CSS
八年级生物教学反思
2014/01/22 职场文书
《大自然的语言》教学反思
2014/04/08 职场文书
敬老院活动总结
2014/04/28 职场文书
国旗下演讲稿
2014/05/08 职场文书
工厂仓管员岗位职责范本
2014/07/17 职场文书
党支部季度考核意见
2015/06/02 职场文书
高一英语教学反思
2016/03/03 职场文书
使用Springboot实现健身房管理系统
2021/07/01 Java/Android
Qt数据库应用之实现图片转pdf
2022/06/01 Java/Android
Java Spring读取和存储详细操作
2022/08/05 Java/Android