다음을 통해 공유


C를 학습하는 JavaScript 및 TypeScript 개발자를 위한 로드맵#

C#, TypeScript 및 JavaScript는 모두 C 언어 제품군의 멤버입니다. 언어 간의 유사성은 C#에서 생산성을 빠르게 높이는 데 도움이 됩니다.

  1. 비슷한 구문: JavaScript, TypeScript 및 C#은 C 언어 패밀리에 있습니다. 이러한 유사성은 이미 C#을 읽고 이해할 수 있음을 의미합니다. 몇 가지 차이점이 있지만 대부분의 구문은 JavaScript 및 C와 동일합니다. 중괄호와 세미콜론은 익숙합니다. if, else, switch와 같은 컨트롤 문은 동일합니다. for, while, do...while의 반복문은 동일합니다. classinterface 동일한 키워드는 C# 및 TypeScript 둘 다에 있습니다. public privateTypeScript 및 C#의 액세스 한정자는 동일합니다.
  2. => 토큰: 모든 언어는 간단한 함수 정의를 지원합니다. C#에서는람다 식이라고 합니다. JavaScript에서는 일반적으로 화살표 함수라고 합니다.
  3. 함수 계층 구조: 세 언어 모두 다른 함수에 정의된 함수인 로컬 함수를 지원합니다.
  4. Async/ Await: 세 언어 모두 비동기 프로그래밍에 대해 동일한 asyncawait 키워드를 공유합니다.
  5. 가비지 수집: 세 언어 모두 자동 메모리 관리를 위해 가비지 수집기를 사용합니다.
  6. 이벤트 모델: C#의 event 구문은 DOM(문서 개체 모델) 이벤트에 대한 JavaScript의 모델과 유사합니다.
  7. 패키지 관리자: NuGet JavaScript 애플리케이션의 경우 npm과 유사하게 C# 및 .NET에 가장 일반적인 패키지 관리자입니다. C# 라이브러리는 어셈블리에서 제공됩니다.

C#을 배우면서 JavaScript의 일부가 아닌 개념을 알아봅니다. TypeScript를 사용하는 경우 이러한 개념 중 일부는 익숙할 수 있습니다.

  1. C# 형식 시스템: C#은 강력한 형식의 언어입니다. 모든 변수에는 형식이 있으며 해당 형식은 변경할 수 없습니다. class 또는 struct 형식을 정의합니다. 다른 형식에서 구현하는 동작을 정의하는 interface 정의를 정의할 수 있습니다. TypeScript에는 이러한 개념이 많이 포함되어 있지만 TypeScript는 JavaScript를 기반으로 하므로 형식 시스템이 엄격하지는 않습니다.
  2. 패턴 일치: 패턴 일치를 사용하면 복잡한 데이터 구조의 모양에 따라 간결한 조건문과 식을 사용할 수 있습니다. is 식은 변수가 일부 패턴 "is"인지 확인합니다. 패턴 기반 switch 변수를 검사하고 해당 특성에 따라 결정을 내리는 풍부한 구문을 제공합니다.
  3. 문자열 보간원시 문자열 리터럴: 문자열 보간을 사용하면 위치 식별자를 사용하는 대신 문자열에 계산된 식을 삽입할 수 있습니다. 원시 문자열 리터럴은 텍스트에서 이스케이프 시퀀스를 최소화하는 방법을 제공합니다.
  4. 널 허용 및 비허용 형식: C#은 널 허용 값 형식을 지원하고 널 허용 참조 형식을 형식에 ? 접미사를 추가하여 지원합니다. nullable 형식의 경우 식을 역참조하기 전에 null 확인하지 않으면 컴파일러에서 경고합니다. nullable이 아닌 형식의 경우 컴파일러는 해당 변수에 null 값을 할당할 수 있는지 경고합니다. 이러한 기능은 애플리케이션이 System.NullReferenceExceptionthrow하는 것을 최소화할 수 있습니다. 이 구문은 TypeScript가 선택적 속성에 ? 사용하는 데 익숙할 수 있습니다.
  5. LINQ: LINQ(언어 통합 쿼리)는 스토리지에 관계없이 데이터를 쿼리하고 변환하는 일반적인 구문을 제공합니다.

당신이 더 많이 배우면서, 다른 차이점들이 명확해집니다. 그러나 그러한 차이점 중 상당수는 범위 면에서 더 작습니다.

JavaScript 및 TypeScript의 일부 친숙한 기능 및 관용구는 C#에서 사용할 수 없습니다.

  1. 동적 형식: C#에서는 정적 입력을 사용합니다. 변수 선언에는 형식이 포함되며 해당 형식은 변경할 수 없습니다. C#에는 런타임 바인딩을 제공하는 dynamic 형식이 있습니다.
  2. 프로토타입 상속: C# 상속은 형식 선언의 일부입니다. C# class 선언에는 모든 기본 클래스가 표시됩니다. JavaScript에서 __proto__ 속성을 설정하여 모든 인스턴스에서 기본 형식을 설정할 수 있습니다.
  3. 해석된 언어: C# 코드를 실행하기 전에 컴파일해야 합니다. JavaScript 코드는 브라우저에서 직접 실행할 수 있습니다.

또한 C#에서는 몇 가지 추가 TypeScript 기능을 사용할 수 없습니다.

  1. 공용 구조체 형식: C#은 공용 구조체 형식을 지원하지 않습니다. 그러나 디자인 제안은 진행 중입니다.
  2. 데코레이터: C#에는 데코레이터가 없습니다. @sealed 같은 일부 일반적인 데코레이터는 C#에서 예약된 키워드입니다. 다른 일반적인 데코레이터에는 에 해당하는특성이 있을 수 있습니다. 다른 데코레이터의 경우 고유한 특성을 만들 수 있습니다.
  3. 추가 용서 구문: C# 컴파일러는 JavaScript에 필요한 것보다 더 엄격하게 코드를 구문 분석합니다.

웹 애플리케이션을 빌드하는 경우 Blazor 사용하여 애플리케이션을 빌드하는 것이 좋습니다. Blazor는 .NET 및 C#용으로 빌드된 전체 스택 웹 프레임워크입니다. Blazor 구성 요소는 서버, .NET 어셈블리 또는 WebAssembly를 사용하는 클라이언트에서 실행할 수 있습니다. Blazor는 즐겨 찾는 JavaScript 또는 TypeScript 라이브러리와의 interop을 지원합니다.