소개
우리 회사는 새로운 기능을 개발할 때 프로그램의 유지 관리성을 고려하여 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();
/** * 传入变更集,将其解码到当前的对象容器。 * @param {System.Erp.VirtualUI.Engine.IChangeRecordReader} reader - 提供记录集。 */ public Decode(reader: IChangeRecordReader): void { //解码上下文对象 var ctx = new DecodeContext();
일반적인 댓글에도 //를 사용하는데, 이는 자바스크립트와 완전히 동일합니다.
TypeScript는 메소드 선언 시 반환 매개변수를 마지막에 배치합니다. 이에 따라 매개변수의 유형도 변수를 선언하는 경우에도 마찬가지입니다.
private _maxId: number; //클래스의 필드 정의
var item: VirtualObject; //메서드에 변수를 정의합니다.
메서드 접근성 측면에서는 public을 지원하여 공개 여부를 설정할 수 있습니다.
매개변수 및 구성
C#에서는 동일한 이름으로 여러 메소드를 정의하고 이를 구별하기 위해 서로 다른 매개변수 유형을 사용하는 경우가 많지만, 이는 JavaScript에서는 허용되지 않으므로 TypeScript에서는 허용되지 않습니다.위의 이유로 인해 생성자는 하나만 있을 수 있다는 것도 이해할 수 있습니다. 다음은 생성자의 예입니다.
constructor( objectContainer: VirtualObjectContainer, objectBinder:IObjectBinder ) { this._objectContainer = objectContainer; this._binder = objectBinder; }
0.8 이후에 추가되었다고 하는데 override 키워드를 못 찾았네요.
자세한 내용은 사양 문서를 천천히 연구해야 합니다. 이 문서는 시작하고 사용하는 데 도움이 될 수 있습니다.
위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.