C#을 배우는 JavaScript 및 TypeScript 개발자를 위한 로드맵
C#, TypeScript 및 JavaScript는 모두 C 언어 계열의 멤버입니다. 두 언어 간의 유사성은 C#에서 빠르게 생산성을 높이는 데 도움이 됩니다.
- 유사한 구문: JavaScript, TypeScript 및 C#은 C 언어 계열에 속합니다. 이러한 유사성은 이미 C#을 읽고 이해할 수 있음을 의미합니다. 약간의 차이점은 있지만 대부분의 구문은 JavaScript, C와 동일합니다. 중괄호와 세미콜론은 익숙합니다.
if
,else
,switch
와 같은 제어문은 동일합니다.for
,while
및do
...while
의 반복 문은 동일합니다.class
및interface
에 대한 동일한 키워드는 C#과 TypeScript에 모두 있습니다. TypeScript와 C#의 액세스 한정자는public
부터private
까지 동일합니다. =>
토큰: 모든 언어는 경량 함수 정의를 지원합니다. C#에서는 람다 식이라고 하며, JavaScript에서는 일반적으로 화살표 함수라고 합니다.- 함수 계층 구조: 세 가지 언어 모두 다른 함수에 정의된 함수인 로컬 함수를 지원합니다.
- 비동기/대기: 세 가지 언어 모두 비동기 프로그래밍에 대해 동일한
async
및await
키워드를 공유합니다. - 가비지 수집: 세 가지 언어 모두 자동 메모리 관리를 위해 가비지 수집기를 사용합니다.
- 이벤트 모델: C#의
event
구문은 DOM(문서 개체 모델) 이벤트에 대한 JavaScript 모델과 유사합니다. - 패키지 관리자: NuGet은 JavaScript 애플리케이션용 npm과 유사한 C# 및 .NET용 가장 일반적인 패키지 관리자입니다. C# 라이브러리는 어셈블리로 제공됩니다.
C#을 계속 배우면서 JavaScript의 일부가 아닌 개념을 배우게 됩니다. TypeScript를 사용하는 경우 다음 개념 중 일부가 익숙할 수 있습니다.
- C# 형식 시스템: C#은 강력한 형식의 언어입니다. 모든 변수에는 형식이 있으며 해당 형식은 변경할 수 없습니다.
class
또는struct
형식을 정의합니다. 다른 형식으로 구현되는 동작을 정의하는interface
정의를 정의할 수 있습니다. TypeScript에는 이러한 개념이 많이 포함되어 있지만 TypeScript는 JavaScript를 기반으로 빌드되었기 때문에 형식 시스템이 그다지 엄격하지 않습니다. - 패턴 일치: 패턴 일치를 사용하면 복잡한 데이터 구조의 형태를 기반으로 간결한 조건문과 식을 사용할 수 있습니다.
is
식은 변수가 어떤 패턴인지 확인합니다. 패턴 기반switch
식은 변수를 검사하고 해당 특성에 따라 결정을 내릴 수 있는 풍부한 구문을 제공합니다. - 문자열 보간 및 원시 문자열 리터럴: 문자열 보간을 사용하면 위치 식별자를 사용하는 대신 평가된 식을 문자열에 삽입할 수 있습니다. 원시 문자열 리터럴은 텍스트의 이스케이프 시퀀스를 최소화하는 방법을 제공합니다.
- nullable 형식 및 null 허용 불가 형식: C#은 형식에
?
접미사를 추가하여 null 허용 값 형식과 null 허용 참조 형식을 지원합니다. nullable 형식의 경우 식을 역참조하기 전에null
을 확인하지 않으면 컴파일러에서 경고를 표시합니다. non-nullable 형식의 경우 컴파일러는 해당 변수에null
값을 할당할 수 있는지 경고합니다. 이러한 기능은 애플리케이션이 System.NullReferenceException을 throw하는 것을 최소화할 수 있습니다. 구문은 TypeScript가 선택적 속성에 대해?
을 사용하는 것과 유사할 수 있습니다. - LINQ: LINQ(언어 통합 쿼리)는 스토리지에 관계없이 데이터를 쿼리하고 변환하는 공통 구문을 제공합니다.
더 많이 배우면 다른 차이점이 분명해 지지만 이러한 차이점 중 상당수는 범위가 더 작습니다.
JavaScript 및 TypeScript의 일부 친숙한 기능과 관용구는 C#에서 사용할 수 없습니다.
- 동적 형식: C#에서는 정적 형식 지정을 사용합니다. 변수 선언에는 형식이 포함되며 해당 형식은 변경할 수 없습니다. C#에는 런타임 바인딩을 제공하는
dynamic
형식이 있습니다. - 프로토타입 상속: C# 상속은 형식 선언의 일부입니다. C#
class
선언은 기본 클래스를 명시합니다. JavaScript에서는__proto__
속성을 설정하여 모든 인스턴스에 기본 형식을 설정할 수 있습니다. - 해석된 언어: C# 코드를 실행하기 전에 컴파일해야 합니다. JavaScript 코드는 브라우저에서 직접 실행할 수 있습니다.
또한 C#에서는 몇 가지 추가 TypeScript 기능을 사용할 수 없습니다.
- 공용 구조체 형식: C#은 공용 구조체 형식을 지원하지 않습니다. 그러나 디자인 제안은 진행 중입니다.
- 데코레이터: C#에는 데코레이터가 없습니다.
@sealed
와 같은 일부 일반적인 데코레이터는 C#에서 예약된 키워드입니다. 다른 일반 데코레이터에는 해당하는 특성이 있을 수 있습니다. 다른 데코레이터의 경우 고유한 특성을 만들 수 있습니다. - 더 관대해진 구문: C# 컴파일러는 JavaScript에서 요구하는 것보다 더 엄격하게 코드를 구문 분석합니다.
웹 애플리케이션을 빌드하는 경우 Blazor를 사용하여 애플리케이션을 빌드하는 것을 고려해야 합니다. Blazor는 .NET 및 C#용으로 빌드된 전체 스택 웹 프레임워크입니다. Blazor 구성 요소는 서버에서 .NET 어셈블리로 실행되거나 WebAssembly를 사용하여 클라이언트에서 실행될 수 있습니다. Blazor는 즐겨 사용하는 JavaScript 또는 TypeScript 라이브러리와의 interop을 지원합니다.
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET