>웹 프론트엔드 >JS 튜토리얼 >C# 프로그래머의 TypeScript_javascript 스킬 이해 과정

C# 프로그래머의 TypeScript_javascript 스킬 이해 과정

WBOY
WBOY원래의
2016-05-16 15:54:041428검색

소개

우리 회사는 새로운 기능을 개발할 때 프로그램의 유지 관리성을 고려하여 TypeScript를 사용하여 처음부터 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, external 등과 같은 다양한 수준이 있을 수 있을 뿐만 아니라 sealing과 같은 수정자가 있을 수 있습니다. TypeScript에서 내보내기를 추가하는 것은 public, abstract, value type 등과 동일합니다. 이용이 불가능합니다.

하지만 인터페이스도 있습니다.

방법 및 설명

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 문서별 주석도 지원된다는 점을 확인했습니다.

일반적인 댓글에도 //를 사용하는데, 이는 자바스크립트와 완전히 동일합니다.

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과 같은 키워드는 없지만 네임드 액세스 매개변수와 선택적 매개변수가 있습니다.

0.8 이후에 추가되었다고 하는데 override 키워드를 못 찾았네요.

자세한 내용은 사양 문서를 천천히 연구해야 합니다. 이 문서는 시작하고 사용하는 데 도움이 될 수 있습니다.

위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.