κ°λ ₯νκ³ μμΈ‘ κ°λ₯ν μΌκΈ° μ보 μ ν리μΌμ΄μ ꡬμΆμ μν΄ TypeScriptμ κ°λ ₯ν κΈ°λ₯μ νμ©νμΈμ. νμ μμ μ±μΌλ‘ λ°μ΄ν° 무결μ±κ³Ό μ½λ μ λ’°μ±μ 보μ₯ν©λλ€.
TypeScript κΈ°μν: νμ μμ μ±μ νμ©ν μΌκΈ° μ보
μΌκΈ° μ보λ λ€μν μΆμ²μ λ°©λν μμ λ°μ΄ν°μ μμ‘΄νλ 볡μ‘ν λΆμΌμ λλ€. μ 보μ μ κ°ν μμ¬ κ²°μ μ λ΄λ¦¬κΈ° μν΄μλ μ΄ λ°μ΄ν°μ μ νμ±κ³Ό μ λ’°μ±μ 보μ₯νλ κ²μ΄ λ§€μ° μ€μν©λλ€. TypeScriptλ κ°λ ₯ν νμ΄ν μμ€ν μ ν΅ν΄ κ°λ ₯νκ³ μμΈ‘ κ°λ₯ν μΌκΈ° μ보 μ ν리μΌμ΄μ μ ꡬμΆν μ μλ κ°λ ₯ν λ°©λ²μ μ 곡ν©λλ€.
μ μΌκΈ° μ보μ TypeScriptλ₯Ό μ¬μ©νλκ°?
TypeScriptλ λ μ¨ κ΄λ ¨ μ ν리μΌμ΄μ κ°λ° μ μ¬λ¬ κ°μ§ μ΄μ μ μ 곡ν©λλ€:
- νμ μμ μ±: TypeScriptμ μ μ νμ΄νμ κ°λ° νλ‘μΈμ€ μ΄κΈ°μ μ€λ₯λ₯Ό κ°μ§νμ¬ μμμΉ λͺ»ν λ°μ΄ν° μ νμΌλ‘ μΈν λ°νμ λ¬Έμ λ₯Ό λ°©μ§νλ λ° λμμ΄ λ©λλ€. μ΄λ νΉμ νμκ³Ό λ²μλ₯Ό μ€μν΄μΌ νλ μμΉν λ μ¨ λ°μ΄ν°λ₯Ό λ€λ£° λ νΉν μ€μν©λλ€.
- ν₯μλ μ½λ μ μ§λ³΄μμ±: νμ μ£Όμμ νΉν λκ·λͺ¨ λ° λ³΅μ‘ν νλ‘μ νΈμμ μ½λλ₯Ό λ μ½κ² μ΄ν΄νκ³ μ μ§λ³΄μν μ μλλ‘ ν©λλ€. μ΄λ μ§μμ μΈ μ λ°μ΄νΈ λ° μμ μ΄ νμν μ₯κΈ° μΌκΈ° μ보 μμ€ν μ νμμ μ λλ€.
- νμ κ°ν: λͺ νν νμ μ μλ κ°λ°μ κ°μ μμ¬μν΅κ³Ό νμ μ κ°μ νμ¬ κ³΅μ μ½λλ² μ΄μ€μμ μμ ν λ μ€ν΄μ μ€λ₯μ μνμ μ€μ¬μ€λλ€.
- λ λμ IDE μ§μ: TypeScriptλ μλ μμ±, μ½λ νμ λ° λ¦¬ν©ν λ§ λꡬλ₯Ό ν¬ν¨ν νμν IDE μ§μμ μ 곡νμ¬ κ°λ°μ μμ°μ±μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€.
- μ μ§μ μ±ν: TypeScriptλ κΈ°μ‘΄ JavaScript νλ‘μ νΈμ μ μ§μ μΌλ‘ μ±νλ μ μμ΄, νμ΄ μ 체 μ¬μμ± μμ΄λ μ½λλ² μ΄μ€λ₯Ό μ μ§μ μΌλ‘ λ§μ΄κ·Έλ μ΄μ νκ³ μ΄μ μ νμ©ν μ μμ΅λλ€.
TypeScriptλ‘ λ μ¨ μ ν리μΌμ΄μ ꡬμΆνκΈ°
TypeScriptλ₯Ό μ¬μ©νμ¬ λ μ¨ μ ν리μΌμ΄μ μ ꡬμΆνλ κ°λ¨ν μμ λ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€. λ μ¨ μ 보μ λν λ°μ΄ν° μ ν μ μλΆν° μμνκ² μ΅λλ€.
λ μ¨ λ°μ΄ν° μ ν μ μ
μΈν°νμ΄μ€λ₯Ό μ μνμ¬ λ μ¨ λ°μ΄ν°λ₯Ό λνλΌ μ μμΌλ©°, μ ν리μΌμ΄μ μ΄ μΌκ΄λκ² μ¬λ°λ₯Έ λ°μ΄ν° ꡬ쑰λ₯Ό μ¬μ©νλλ‘ λ³΄μ₯ν©λλ€. μλ₯Ό λ€μ΄, μ¨λ νλ κ°μ μν μΈν°νμ΄μ€λ₯Ό μ μν μ μμ΅λλ€:
interface Temperature {
value: number;
unit: 'celsius' | 'fahrenheit' | 'kelvin';
timestamp: Date;
}
λ§μ°¬κ°μ§λ‘ λ°λ 쑰건μ λν μΈν°νμ΄μ€λ₯Ό μ μν μ μμ΅λλ€:
interface Wind {
speed: number;
direction: string;
unit: 'km/h' | 'm/s' | 'mph';
}
λ§μ§λ§μΌλ‘, λͺ¨λ κ°λ³ μ‘°κ°μ κ²°ν©νλ μ£Όμ WeatherData μΈν°νμ΄μ€λ₯Ό μ μν μ μμ΅λλ€:
interface WeatherData {
temperature: Temperature;
wind: Wind;
humidity: number;
pressure: number;
location: string;
timestamp: Date;
}
μ΄λ¬ν μΈν°νμ΄μ€λ₯Ό μ μν¨μΌλ‘μ¨ μ ν리μΌμ΄μ μμ μ¬μ©λλ λͺ¨λ λ μ¨ λ°μ΄ν°κ° νΉμ ꡬ쑰λ₯Ό μ€μνλλ‘ νμ¬ μ€λ₯ λ° λΆμΌμΉμ μνμ μ€μΌ μ μμ΅λλ€.
APIμμ λ μ¨ λ°μ΄ν° κ°μ Έμ€κΈ°
λλΆλΆμ λ μ¨ μ ν리μΌμ΄μ μ λ μ¨ λ°μ΄ν°λ₯Ό κ²μνκΈ° μν΄ μΈλΆ APIμ μμ‘΄ν©λλ€. TypeScriptλ μ΄λ¬ν APIμμ λ°μ λ°μ΄ν°λ₯Ό κ²μ¦νκ³ μ μλ μΈν°νμ΄μ€λ₯Ό μ€μνλμ§ νμΈνλ λ° λμμ΄ λ μ μμ΅λλ€.
JSON νμμΌλ‘ λ°μ΄ν°λ₯Ό λ°ννλ κ°μμ λ μ¨ APIλ₯Ό μ¬μ©νλ€κ³ κ°μ ν΄ λ³΄κ² μ΅λλ€. TypeScriptλ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό κ°μ Έμ€κ³ WeatherData μΈν°νμ΄μ€μ λν΄ κ²μ¦νλ ν¨μλ₯Ό μ μν μ μμ΅λλ€.
async function fetchWeatherData(location: string): Promise<WeatherData> {
const apiKey = 'YOUR_API_KEY';
const apiUrl = `https://api.example.com/weather?location=${location}&apiKey=${apiKey}`;
const response = await fetch(apiUrl);
const data = await response.json();
// WeatherData μΈν°νμ΄μ€μ λν΄ λ°μ΄ν° κ²μ¦
if (!isValidWeatherData(data)) {
throw new Error('APIμμ μλͺ»λ λ μ¨ λ°μ΄ν°λ₯Ό λ°μμ΅λλ€');
}
return data as WeatherData;
}
function isValidWeatherData(data: any): data is WeatherData {
// μ¬κΈ°μ κ²μ¦ λ‘μ§μ ꡬννμΈμ
// μ΄ ν¨μλ λ°μ΄ν°κ° WeatherData μΈν°νμ΄μ€λ₯Ό μ€μνλμ§ νμΈν΄μΌ ν©λλ€
// μλ₯Ό λ€μ΄:
return (typeof data.temperature?.value === 'number' &&
['celsius', 'fahrenheit', 'kelvin'].includes(data.temperature?.unit) &&
typeof data.wind?.speed === 'number' &&
typeof data.wind?.direction === 'string' &&
typeof data.humidity === 'number' &&
typeof data.pressure === 'number' &&
typeof data.location === 'string' &&
data.timestamp instanceof Date);
}
μ΄ μμ μμ fetchWeatherData ν¨μλ APIμμ λ μ¨ λ°μ΄ν°λ₯Ό κ°μ Έμ¨ λ€μ isValidWeatherData ν¨μλ₯Ό μ¬μ©νμ¬ WeatherData μΈν°νμ΄μ€μ λν΄ λ°μ΄ν°λ₯Ό κ²μ¦ν©λλ€. λ°μ΄ν°κ° μ ν¨νμ§ μμΌλ©΄ μ€λ₯κ° λ°μνμ¬ μ ν리μΌμ΄μ
μ΄ μ μ¬μ μΌλ‘ μλͺ»λ λ°μ΄ν°λ₯Ό μ¬μ©νλ κ²μ λ°©μ§ν©λλ€.
λ μ¨ λ°μ΄ν° νμ
μ ν¨μ±μ΄ κ²μ¦λ λ μ¨ λ°μ΄ν°λ₯Ό ν보νλ©΄ μ ν리μΌμ΄μ μ νμν μ μμ΅λλ€. TypeScriptμ νμ μμ μ±μ λ°μ΄ν°λ₯Ό μ¬λ°λ₯΄κ² νμνκ³ μλμ§ νμΈνλ λ° λμμ΄ λ©λλ€.
async function displayWeatherData(location: string) {
try {
const weatherData = await fetchWeatherData(location);
const temperatureElement = document.getElementById('temperature');
const windElement = document.getElementById('wind');
const humidityElement = document.getElementById('humidity');
if (temperatureElement) {
temperatureElement.textContent = `μ¨λ: ${weatherData.temperature.value} ${weatherData.temperature.unit}`;
}
if (windElement) {
windElement.textContent = `λ°λ: ${weatherData.wind.speed} ${weatherData.wind.unit}, ${weatherData.wind.direction}`;
}
if (humidityElement) {
humidityElement.textContent = `μ΅λ: ${weatherData.humidity}%`;
}
} catch (error) {
console.error('λ μ¨ λ°μ΄ν°λ₯Ό κ°μ Έμ€κ±°λ νμνλ μ€ μ€λ₯ λ°μ:', error);
}
}
μ΄ ν¨μλ μ£Όμ΄μ§ μμΉμ λν λ μ¨ λ°μ΄ν°λ₯Ό κ°μ Έμ¨ λ€μ ν΄λΉ HTML μμλ₯Ό λ°μ΄ν°λ‘ μ λ°μ΄νΈν©λλ€. TypeScriptλ₯Ό μ¬μ©νκΈ° λλ¬Έμ νμνλ λ°μ΄ν°κ° μ¬λ°λ₯Έ μ νκ³Ό νμμμ νμ ν μ μμ΅λλ€.
μΌκΈ° μ보 μ ν리μΌμ΄μ μ μν κ³ κΈ TypeScript κΈ°λ²
κΈ°λ³Έ μ ν κ²μ¬λ₯Ό λμ΄ TypeScriptλ μΌκΈ° μ보 μ ν리μΌμ΄μ μ κ²¬κ³ μ±κ³Ό μμΈ‘ κ°λ₯μ±μ λμ± ν₯μμν€λ λ° μ¬μ©ν μ μλ μ¬λ¬ κ³ κΈ κΈ°λ²μ μ 곡ν©λλ€.
νλ³μ λ¬λ¦° μ λμΈ (Discriminated Unions)
νλ³μ λ¬λ¦° μ λμΈμ μ¬μ©νλ©΄ νΉμ νλ³μ μμ±μ λ°λΌ λ€λ₯Έ ννλ₯Ό μ·¨ν μ μλ μ νμ μ μν μ μμ΅λλ€. μ΄λ λΉ, λ λλ νλ³κ³Ό κ°μ λ€λ₯Έ μ νμ λ μ¨ νμμ λνλ΄λ λ° μ μ©ν μ μμ΅λλ€.
interface Rain {
type: 'rain';
intensity: 'light' | 'moderate' | 'heavy';
}
interface Snow {
type: 'snow';
depth: number;
}
interface Sunshine {
type: 'sunshine';
duration: number;
}
type WeatherEvent = Rain | Snow | Sunshine;
function processWeatherEvent(event: WeatherEvent) {
switch (event.type) {
case 'rain':
console.log(`λΉ: ${event.intensity}`);
break;
case 'snow':
console.log(`λ: ${event.depth} cm`);
break;
case 'sunshine':
console.log(`νλ³: ${event.duration} μκ°`);
break;
default:
// TypeScriptλ μ΄ caseκ° μ λ λλ¬νμ§ μλλ‘ λ³΄μ₯ν©λλ€
const _exhaustiveCheck: never = event;
return _exhaustiveCheck;
}
}
μ΄ μμ μμ WeatherEvent μ νμ Rain, Snow λ° Sunshine μ νμ νλ³μ λ¬λ¦° μ λμΈμ
λλ€. type μμ±μ νλ³μ μν μ νμ¬ λ€μν μ νμ λ μ¨ μ΄λ²€νΈλ₯Ό μ½κ² ꡬλΆν μ μμ΅λλ€. TypeScriptμ μ ν κ²μ¬κΈ°λ processWeatherEvent ν¨μμμ κ°λ₯ν λͺ¨λ caseλ₯Ό μ²λ¦¬νλλ‘ λ³΄μ₯νμ¬ μ μ¬μ μΈ λ°νμ μ€λ₯λ₯Ό λ°©μ§ν©λλ€.
μ λ€λ¦ (Generics)
μ λ€λ¦μ μ¬μ©νλ©΄ νμ μμ μ±μ ν¬μνμ§ μκ³ λ€λ₯Έ μ νκ³Ό μλνλ μ½λλ₯Ό μμ±ν μ μμ΅λλ€. μ΄λ λ€λ₯Έ μ νμ λ μ¨ λ°μ΄ν°λ₯Ό μ²λ¦¬ν μ μλ μ¬μ¬μ© κ°λ₯ν κ΅¬μ± μμλ₯Ό λ§λλ λ° μ μ©ν μ μμ΅λλ€.
function processData<T>(data: T[], processor: (item: T) => void) {
data.forEach(processor);
}
interface DailyTemperature {
date: Date;
high: number;
low: number;
}
interface DailyRainfall {
date: Date;
amount: number;
}
const temperatureData: DailyTemperature[] = [
{ date: new Date('2024-01-01'), high: 10, low: 5 },
{ date: new Date('2024-01-02'), high: 12, low: 7 },
];
const rainfallData: DailyRainfall[] = [
{ date: new Date('2024-01-01'), amount: 2 },
{ date: new Date('2024-01-02'), amount: 5 },
];
function logTemperature(temp: DailyTemperature) {
console.log(`λ μ§: ${temp.date}, μ΅κ³ : ${temp.high}, μ΅μ : ${temp.low}`);
}
function logRainfall(rain: DailyRainfall) {
console.log(`λ μ§: ${rain.date}, μ: ${rain.amount}`);
}
processData(temperatureData, logTemperature);
processData(rainfallData, logRainfall);
μ΄ μμ μμ processData ν¨μλ λͺ¨λ μ νμ λ°μ΄ν°μ μλν μ μλ μ λ€λ¦ ν¨μμ
λλ€. T μ νμ ν¨μκ° νΈμΆλ λ μ§μ λλ μ ν λ§€κ°λ³μμ
λλ€. μ΄λ₯Ό ν΅ν΄ νμ
μμ μ±μ μ μ§νλ©΄μ μ¨λ λ°μ΄ν°μ κ°μ°λ λ°μ΄ν°λ₯Ό λͺ¨λ μ²λ¦¬νκΈ° μν΄ λμΌν ν¨μλ₯Ό μ¬μ¬μ©ν μ μμ΅λλ€.
μ‘°κ±΄λΆ μ ν (Conditional Types)
μ‘°κ±΄λΆ μ νμ μ¬μ©νλ©΄ λ€λ₯Έ μ νμ μμ‘΄νλ μ νμ μ μν μ μμ΅λλ€. μ΄λ λ€λ₯Έ μ λ ₯ λ°μ΄ν°μ μ μνλ μ νμ λ§λλ λ° μ μ©ν μ μμ΅λλ€.
type WeatherDataType<T extends 'temperature' | 'wind'> =
T extends 'temperature' ? Temperature : Wind;
function getWeatherValue(type: 'temperature', data: Temperature): number;
function getWeatherValue(type: 'wind', data: Wind): number;
function getWeatherValue(type: 'temperature' | 'wind', data: Temperature | Wind): number {
if (type === 'temperature') {
return (data as Temperature).value;
} else {
return (data as Wind).speed;
}
}
const temperatureData: Temperature = { value: 25, unit: 'celsius', timestamp: new Date() };
const windData: Wind = { speed: 15, direction: 'North', unit: 'km/h' };
const temperatureValue = getWeatherValue('temperature', temperatureData);
const windValue = getWeatherValue('wind', windData);
console.log(`μ¨λ: ${temperatureValue}`);
console.log(`νμ: ${windValue}`);
μ΄ μμ μμ WeatherDataType μ νμ T λ§€κ°λ³μμ λ°λΌ λ¬λΌμ§λ μ‘°κ±΄λΆ μ νμ
λλ€. Tκ° 'temperature'μ΄λ©΄ WeatherDataTypeλ Temperatureμ
λλ€. Tκ° 'wind'μ΄λ©΄ WeatherDataTypeλ Windμ
λλ€. μ΄λ₯Ό ν΅ν΄ μ
λ ₯ μ νμ λ°λΌ λ€λ₯Έ μ νμ λ μ¨ λ°μ΄ν°λ₯Ό μ²λ¦¬ν μ μλ ν¨μλ₯Ό λ§λ€ μ μμ΅λλ€.
TypeScript κΈ°μν μ ν리μΌμ΄μ μ μν λͺ¨λ² μ¬λ‘
TypeScript κΈ°λ° μΌκΈ° μ보 μ ν리μΌμ΄μ μ μ±κ³΅μ 보μ₯νκΈ° μν΄ λ€μ λͺ¨λ² μ¬λ‘λ₯Ό κ³ λ €νμμμ€:
- λͺ νν λ°μ΄ν° λͺ¨λΈ μ μ: λͺ¨λ λ μ¨ κ΄λ ¨ λ°μ΄ν°μ λν ν¬κ΄μ μ΄κ³ μ νν λ°μ΄ν° λͺ¨λΈμ μ μνλ λ° μκ°μ ν¬μνμμμ€. μ΄κ²μ΄ μ ν리μΌμ΄μ μ κΈ°μ΄κ° λμ΄ λ°μ΄ν° μΌκ΄μ±μ 보μ₯ν κ²μ λλ€.
- κ°λ ₯ν λ°μ΄ν° κ²μ¦ ꡬν: APIμ κ°μ μΈλΆ μμ€μμ λ°μ λͺ¨λ λ°μ΄ν°λ₯Ό κ²μ¦νμ¬ μλͺ»λκ±°λ μμμΉ λͺ»ν λ°μ΄ν°λ‘ μΈν μ€λ₯λ₯Ό λ°©μ§νμμμ€.
- μλ―Έ μλ νμ μ£Όμ μ¬μ©: μ½λλ₯Ό λ μ½κ² μ΄ν΄νκ³ μ μ§λ³΄μν μ μλλ‘ μ€λͺ μ μ΄κ³ μ νν νμ μ£Όμμ μ¬μ©νμμμ€.
- κ³ κΈ TypeScript κΈ°λ₯ νμ©: νλ³μ λ¬λ¦° μ λμΈ, μ λ€λ¦ λ° μ‘°κ±΄λΆ μ νκ³Ό κ°μ κ³ κΈ TypeScript κΈ°λ₯μ νμνκ³ νμ©νμ¬ μ ν리μΌμ΄μ μ κ²¬κ³ μ±κ³Ό μ μ°μ±μ λμ± ν₯μμν€μμμ€.
- λ¨μ ν μ€νΈ μμ±: μ½λμ μ νμ±μ νμΈνκ³ λ€μν 쑰건μμ μμλλ‘ μλνλμ§ νμΈνκΈ° μν΄ λ¨μ ν μ€νΈλ₯Ό μμ±νμμμ€.
- μ½λ λ¬Έμν: λ€λ₯Έ κ°λ°μκ° νλ‘μ νΈλ₯Ό λ μ½κ² μ΄ν΄νκ³ κΈ°μ¬ν μ μλλ‘ μ½λλ₯Ό μ² μ ν λ¬Έμννμμμ€.
- μ€λ₯ λͺ¨λν°λ§ λ° λ‘κΉ : μ ν리μΌμ΄μ μμ λ¬Έμ λ₯Ό μ μνκ² μλ³νκ³ ν΄κ²°νκΈ° μν΄ ν¬κ΄μ μΈ μ€λ₯ λͺ¨λν°λ§ λ° λ‘κΉ μ ꡬννμμμ€.
λ μ¨ μ ν리μΌμ΄μ μ μν κΈλ‘λ² κ³ λ € μ¬ν
μ μΈκ³ μ¬μ©μλ₯Ό μν λ μ¨ μ ν리μΌμ΄μ μ κ°λ°ν λλ λ€μ μ¬νμ κ³ λ €νλ κ²μ΄ μ€μν©λλ€.
- κ΅μ ν λ° νμ§ν: μ¬λ¬ μΈμ΄λ₯Ό μ§μνκ³ μ ν리μΌμ΄μ μ λ€μν μ§μ μ€μ (λ μ§ λ° μκ° νμ, μΈ‘μ λ¨μ, λ¬Ένμ κ΄μ΅ ν¬ν¨)μ λ§κ² μ‘°μ νμμμ€.
- μκ°λ: μκ°λλ₯Ό μ¬λ°λ₯΄κ² μ²λ¦¬νμ¬ λ€λ₯Έ μμΉμ μ¬μ©μμκ² λ μ¨ μ λ³΄κ° μ ννκ² νμλλλ‘ νμμμ€.
- λ°μ΄ν° μμ€: μ μΈκ³ λ²μλ₯Ό μ 곡νλ μ λ’°ν μ μκ³ μ νν λ μ¨ λ°μ΄ν° μμ€λ₯Ό νμ©νμμμ€. μ νμ±κ³Ό μ€λ³΅μ±μ ν₯μμν€κΈ° μν΄ μ¬λ¬ λ°μ΄ν° μμ€λ₯Ό μ¬μ©νλ κ²μ κ³ λ €νμμμ€. μλ₯Ό λ€μ΄, μ λ½μμλ μ λ½ μ€κΈ° μ보 μΌν°(ECMWF)κ° μ μΈκ³ λ°μ΄ν°λ₯Ό μ 곡ν©λλ€. λ―Έκ΅μμλ κ΅λ¦½ κΈ°μμ²(NWS)μ΄ μ£Όμ μ 곡μμ λλ€.
- μ κ·Όμ±: WCAGμ κ°μ μ κ·Όμ± μ§μΉ¨μ μ€μνμ¬ μ₯μ κ° μλ μ¬μ©μλ μ ν리μΌμ΄μ μ μ‘μΈμ€ν μ μλλ‘ νμμμ€.
- κ·μ μ€μ: μ¬λ¬ κ΅κ°μμ λ μ¨ λ°μ΄ν° λ° μμΈ‘κ³Ό κ΄λ ¨λ κ΄λ ¨ κ·μ μ μΈμ§νκ³ μ€μνμμμ€.
κ²°λ‘
TypeScriptλ κ°λ ₯νκ³ ν¨κ³Όμ μΈ λ°©μμΌλ‘ κ²¬κ³ νκ³ μμΈ‘ κ°λ₯ν μΌκΈ° μ보 μ ν리μΌμ΄μ μ ꡬμΆν μ μλ λ°©λ²μ μ 곡ν©λλ€. κ°λ ₯ν νμ΄ν μμ€ν , κ³ κΈ κΈ°λ₯ λ° λͺ¨λ² μ¬λ‘λ₯Ό νμ©νμ¬ λ³΄λ€ μμ μ μ΄κ³ μ μ§λ³΄μνκΈ° μ¬μ°λ©° νμ νκΈ° μ¬μ΄ μ ν리μΌμ΄μ μ λ§λ€ μ μμ΅λλ€. λμ , μ΄μ‘ λ° μ¬ν΄ κ΄λ¦¬μ κ°μ λ€μν μ°μ μμ μΌκΈ° μλ³΄κ° μ μ λ μ€μν΄μ§μ λ°λΌ TypeScriptμ μ¬μ©μ λ μ¨ κ΄λ ¨ μ 보μ μ νμ±κ³Ό μ λ’°μ±μ 보μ₯νλ λ° λμμ΄ λ μ μμΌλ©°, κΆκ·Ήμ μΌλ‘ λ λμ μμ¬ κ²°μ κ³Ό κ°μ λ κ²°κ³Όλ₯Ό κ°μ Έμ¬ μ μμ΅λλ€.
μΌκΈ° μ보 νλ‘μ νΈμ TypeScriptλ₯Ό μ±νν¨μΌλ‘μ¨ κ°λ°μλ μ μΈκ³ μ§μ μ¬νμ ννμ μ£Όλ λ³΄λ€ μ ννκ³ μ λ’°ν μ μμΌλ©° μ μ§λ³΄μ κ°λ₯ν μΌκΈ° μ보 μμ€ν μ κΈ°μ¬ν μ μμ΅λλ€. μ΄ λ°μ΄ν° μ§μ½μ μ΄κ³ μ€μν λΆμΌμμ νμ μμ μ±κ³Ό κ°λ ₯ν κΈ°λ₯μ λΆλͺ ν μ΄μ μ μ 곡ν©λλ€.