AI를 사용한 JavaScript의 소스 간 번역에는 자연어 처리(NLP) 기술과 기계 학습 알고리즘을 활용하여 소스 코드를 분석하고 이해하는 작업이 포함됩니다.
번역 문제 | JavaScript 구문 예시 | TypeScript 구문 예시 | 점수 (1-10) |
---|---|---|---|
타입 주석 | let x = 5; |
let x: number = 5; |
3 |
함수 오버로딩 | function add(a, b) { return a + b; } |
function add(a: number, b: number): number; |
7 |
인터페이스 구현 | class Dog { bark() { console.log("Woof"); } } |
interface Animal { bark(): void; } class Dog implements Animal { bark() { console.log("Woof"); } } |
8 |
유니온 타입 | let value = Math.random() > 0.5 ? "Hello" : 42; |
let value: string | number = Math.random() > 0.5 ? "Hello" : 42; |
6 |
열거형 | const Colors = { RED: 'red', GREEN: 'green' }; |
enum Colors { RED = 'red', GREEN = 'green' } |
5 |
제네릭 | function identity(arg) { return arg; } |
function identity<T>(arg: T): T { return arg; } |
7 |
엄격한 널 검사 | let name = null; |
let name: string | null = null; |
4 |
모듈 시스템 | const moduleA = require('moduleA'); |
import moduleA from 'moduleA'; |
6 |
JavaScript에서는 변수를 타입 주석 없이 선언할 수 있으며, 잘못된 타입이 사용될 경우 런타임 오류가 발생할 수 있습니다. 반면 TypeScript는 타입 안전성을 보장하기 위해 명시적인 타입 주석을 요구합니다.
JavaScript 예시:
let x = 5; // x는 number로 추론됨
TypeScript 예시:
let x: number = 5; // x는 number로 명시적으로 선언됨
JavaScript는 함수 오버로딩을 기본적으로 지원하지 않지만, TypeScript는 함수에 대해 여러 시그니처를 정의할 수 있습니다.
JavaScript 예시:
function add(a, b) {
return a + b;
}
TypeScript 예시:
function add(a: number, b: number): number;
function add(a: string, b: string): string;
function add(a: any, b: any): any {
return a + b;
}
JavaScript는 프로토타입 기반 상속을 사용하지만, TypeScript는 클래스가 구현할 수 있는 인터페이스를 정의할 수 있습니다.
JavaScript 예시:
class Dog {
bark() {
console.log("Woof");
}
}
TypeScript 예시:
interface Animal {
bark(): void;
}
class Dog implements Animal {
bark() {
console.log("Woof");
}
}
JavaScript는 변수가 어떤 타입의 값도 가질 수 있도록 허용하지만, TypeScript는 변수가 여러 타입을 가질 수 있도록 유니온 타입을 제공합니다.
JavaScript 예시:
let value = Math.random() > 0.5 ? "Hello" : 42;
TypeScript 예시:
let value: string | number = Math.random() > 0.5 ? "Hello" : 42;
JavaScript는 내장된 열거형 타입이 없지만, TypeScript는 코드 가독성을 높이기 위해 열거형을 정의할 수 있는 방법을 제공합니다.
JavaScript 예시:
const Colors = { RED: 'red', GREEN: 'green' };
TypeScript 예시:
enum Colors {
RED = 'red',
GREEN = 'green'
}
JavaScript의 함수는 타입 안전성이 없지만, TypeScript는 어떤 데이터 타입과도 작동할 수 있는 제네릭 함수를 생성할 수 있습니다.
JavaScript 예시:
function identity(arg) {
return arg;
}
TypeScript 예시:
function identity<T>(arg: T): T {
return arg;
}
JavaScript는 엄격한 검사 없이 null 및 undefined 값을 허용하지만, TypeScript는 더 엄격한 널 검사를 시행할 수 있습니다.
JavaScript 예시:
let name = null;
TypeScript 예시:
let name: string | null = null;
JavaScript는 CommonJS 또는 ES6 모듈을 사용하지만, TypeScript는 import/export 구문을 가진 더 구조화된 모듈 시스템을 가지고 있습니다.
JavaScript 예시:
const moduleA = require('moduleA');
TypeScript 예시:
import moduleA from 'moduleA';