ホームページ >ウェブフロントエンド >jsチュートリアル >C# プログラマーによる TypeScript_javascript スキルの理解プロセス

C# プログラマーによる TypeScript_javascript スキルの理解プロセス

WBOY
WBOYオリジナル
2016-05-16 15:54:041428ブラウズ

はじめに

弊社では新しい機能を開発する際には、プログラムの保守性を考えてTypeScriptを使ってブラウザ上でプログラムを作成していますが、私もJavaScriptは半分しかできません。この記事では、C# プログラマーが TypeScript を理解するプロセスについて説明します。

注: この記事は Typescript 0.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 {}
}

まず、簡単に言うと、名前空間に似た概念があり、一方は名前空間と呼ばれ、もう一方はモジュールと呼ばれます。

次に、C# で他のクラスを参照するには、まずプロジェクト ファイルで dll を参照し、次にファイル ヘッダーで名前空間 (オプション) を使用する必要があります。ただし、TypeScript にはそのような概念はありません。ファイルは直接参照されます。

C# では、クラスには public、internal などの多くのレベルと、sealed などの修飾子を含めることができます。TypeScript では、export の追加は public、abstract、value 型などに相当します。利用できないこと。

しかしインターフェースはあります。

メソッドとコメント

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();

他の JsDoc 仕様とは異なり、C# の XML ドキュメント固有のコメントもサポートされていることが初めてわかります。

通常のコメントでも // が使用されますが、これは JavaScript とまったく同じです。

メソッドの宣言では、TypeScript は戻りパラメーターを最後に置きます。これに応じて、変数を宣言する場合も同様にパラメーターの型を置きます。

private _maxId:number; //クラスのフィールドを定義します

var item: VirtualObject; //メソッド内で変数を定義します。

メソッドのアクセシビリティに関しては、public がサポートされているため、公開することも非公開にすることもできます。

パラメータと構築

C# では、同じ名前の複数のメソッドを定義し、それらを区別するために異なるパラメーターの型を使用することがよくありますが、これは JavaScript では許可されていないため、TypeScript では許可されません。

上記の理由により、コンストラクターは 1 つしか存在できないことも理解できます。以下はコンストラクターの例です:

    constructor(

      objectContainer: VirtualObjectContainer,

      objectBinder:IObjectBinder

    ) {

      this._objectContainer = objectContainer;

      this._binder = objectBinder;

    }

JavaScriptの概念に基づいており、ref out inなどのキーワードはありませんが、名前付きアクセスパラメータとオプションパラメータがあります。

0.8 以降に追加されたと言われていますが、override キーワードは見つかりませんでした。

詳細については、仕様書をゆっくりと読んでください。この文書は、使い始めて楽しむのに役立ちます。

以上がこの記事の全内容です。皆さんに気に入っていただければ幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。