c#程序員對(duì)TypeScript的認(rèn)識(shí)過(guò)程
簡(jiǎn)介
TypeScript一直發(fā)展不錯(cuò),我們公司在開(kāi)發(fā)新功能時(shí),考慮到程序的可維護(hù)性,使用了TypeScript編寫(xiě)瀏覽器上的程序,我們是從零開(kāi)始使用TypeScript,甚至我連javascript也是半罐子,本文描述了一個(gè)c#程序員認(rèn)識(shí)TypeScript的過(guò)程。
注:本文編寫(xiě)是基于Typescript0.8版本,而且初用,可能過(guò)時(shí),具體規(guī)范可以參考http://www.typescriptlang.org
命名空間和類
作為面向?qū)ο蟮拈_(kāi)發(fā)人員思維,第一個(gè)想到的是TypeScript如何定義類,由于正好我們項(xiàng)目服務(wù)端(C#)的原理和客戶端(TypeScript)原理完全相同,所以這里正好用C#與TypeScript對(duì)比。
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 {}
}
首先簡(jiǎn)單來(lái)說(shuō),都有類似命名空間的概念,一個(gè)叫namespace,一個(gè)叫module,這個(gè)就不廢話了。
其次,c#要引用其他的類,首先你需要在工程文件中引用dll,然后在文件頭上using一個(gè)命名空間(可選),但是在TypeScript中,沒(méi)有這個(gè)概念,直接引用一個(gè)文件的。
C#里類可以public、internal等等很多級(jí)別,還有sealed等修飾符,TypeScript你就忘記這些吧,加入export相當(dāng)于public,抽象,值類型什么的,這個(gè)好像沒(méi)有。
但是接口是有的。
方法和注釋
C#的方法
/// <summary>
/// 解碼變更集
/// </summary>
/// <param name="reader"> 一個(gè)變更集讀取器對(duì)象 </param>
public void DecodeChangeSet(ChangeRecordReader reader) {
//解碼上下文對(duì)象
var ctx = new DecodeContext();
TypeScript聲明方法
/**
* 傳入變更集,將其解碼到當(dāng)前的對(duì)象容器。
* @param {System.Erp.VirtualUI.Engine.IChangeRecordReader} reader - 提供記錄集。
*/
public Decode(reader: IChangeRecordReader): void {
//解碼上下文對(duì)象
var ctx = new DecodeContext();
我們首先看到c#的xml 文檔專用注釋也是支持的,不同他使用JsDoc的規(guī)范。
普通的注釋也使用// ,這個(gè)完全和javascript相同。
在方法的聲明上,TypeScript將返回參數(shù)放在后面,對(duì)應(yīng)的,參數(shù)的類型也是放在名字后面,如果你聲明變量,也是這樣的
private _maxId: number; //在類上定義字段
var item: VirtualObject; //在方法里定義變量。
在方法的可訪問(wèn)性上,支持public,這樣就可以公開(kāi)還是不公開(kāi)。
參數(shù)和構(gòu)造
在C#里面,我們經(jīng)常同一個(gè)名字定義多個(gè)方法,使用不同的參數(shù)類型區(qū)分,但是在javascript中不允許,所以TypeScript也不允許。
由于上面的原因,你也就能理解只能有一個(gè)構(gòu)造函數(shù)。下面是他的構(gòu)造函數(shù)例子:
constructor(
objectContainer: VirtualObjectContainer,
objectBinder:IObjectBinder
) {
this._objectContainer = objectContainer;
this._binder = objectBinder;
}
基于javascript的概念,也就沒(méi)有ref out in這樣的關(guān)鍵字,但有命名方式訪問(wèn)參數(shù)和可選參數(shù)。
我也沒(méi)有發(fā)現(xiàn)override關(guān)鍵字,雖然據(jù)說(shuō)0.8之后新增了。
好了,更多的細(xì)節(jié)需要你慢慢研究規(guī)范文檔了,這篇文檔可以幫助你入門(mén),使用愉快。
以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。
- 使用typescript開(kāi)發(fā)angular模塊并發(fā)布npm包
- TypeScript學(xué)習(xí)之強(qiáng)制類型的轉(zhuǎn)換
- TypeScript 中接口詳解
- TypeScript Type Innference(類型判斷)
- Vue2 Vue-cli中使用Typescript的配置詳解
- 關(guān)于TypeScript中import JSON的正確姿勢(shì)詳解
- TypeScript入門(mén)-基本數(shù)據(jù)類型
- TypeScript 學(xué)習(xí)筆記之基本類型
- TypeScript具有的幾個(gè)不同特質(zhì)
- 關(guān)于TypeScript模塊導(dǎo)入的那些事
相關(guān)文章
javascript實(shí)現(xiàn)可鍵盤(pán)控制的抽獎(jiǎng)系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)可鍵盤(pán)控制的抽獎(jiǎng)系統(tǒng)的相關(guān)資料,需要的朋友可以參考下2016-03-03
JavaScript Ajax Json實(shí)現(xiàn)上下級(jí)下拉框聯(lián)動(dòng)效果實(shí)例代碼
這篇文章主要介紹了JavaScript Ajax Json實(shí)現(xiàn)上下級(jí)下拉框聯(lián)動(dòng)效果實(shí)例代碼,有需要的朋友可以參考一下2013-11-11
JS實(shí)現(xiàn)的車標(biāo)圖片提示效果代碼
這篇文章主要介紹了JS實(shí)現(xiàn)的車標(biāo)圖片提示效果代碼,涉及JavaScript鼠標(biāo)事件觸發(fā)頁(yè)面元素遍歷修改的相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10
JavaScript Array.flat()函數(shù)用法解析
這篇文章主要介紹了JavaScript Array.flat()函數(shù)用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
javascript如何判斷數(shù)組內(nèi)元素是否重復(fù)的方法集錦
javascript如何判斷數(shù)組內(nèi)元素是否重復(fù)的方法集錦...2007-02-02
PDF.js前端開(kāi)發(fā)使用代碼示例及實(shí)用技巧
pdf.js是一款Nozilla開(kāi)發(fā)的、用于網(wǎng)頁(yè)上顯示pdf文檔的Javascript庫(kù),提供pdf文件的在線閱讀,這篇文章主要給大家介紹了關(guān)于PDF.js前端開(kāi)發(fā)使用實(shí)用技巧的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04

