Jieunny์ ๋ธ๋ก๊ทธ
[TS] 0. TypeScript๋? ๋ณธ๋ฌธ
๐ฃ ํ์ ์คํฌ๋ฆฝํธ๋?
โ๏ธ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ ์ ๋ถ์ฌํ ์ธ์ด
โ๏ธ ๋ธ๋ผ์ฐ์ ์์ ์คํํ๋ ค๋ฉด ํ์ผ์ ํ๋ฒ ๋ณํํด์ฃผ์ด์ผ ํ๋ค(์ปดํ์ผ)
๐ฃ ํ์ ์คํฌ๋ฆฝํธ์ ์ปดํ์ผ๋ฌ tsc
โ๏ธ ํ์ ๊ฒ์ฌ๊ธฐ
npm install -g typescript
tsc hello.ts
โฐ hello.js ํ์ผ์ ์ป์ ์ ์๋ค.
๐ฃ ์ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์จ์ผ ํ๋๊ฐ?
โ๏ธ ์๋ฌ์ ์ฌ์ ๋ฐฉ์ง
// JS ์ฝ๋
function sum(a, b) {
return a + b;
}
sum('10', '20); // 1020
// TS ์ฝ๋
function sum(a: number, b:number) {
return a + b;
}
sum('10', '20'); // Error: '10'์ number์ ํ ๋น๋ ์ ์์ต๋๋ค.
โฐ ์๋ํ์ง ์์ ์ฝ๋์ ๋์์ ์๋ฐฉํ ์ ์๋ค.
โ๏ธ ์ฝ๋ ์๋ ์์ฑ๊ณผ ๊ฐ์ด๋
function sum(a: number, b: number): number {
return a + b;
}
var total = sum(10, 20);
total.toLocaleString();
โฐ total์ ๋ํ ํ์ ์ด ๋ฏธ๋ฆฌ ์ง์ ๋์ด ์๊ธฐ ๋๋ฌธ์ VSCode์์ ํด๋น ํ์ ์ ๋ํ API๋ฅผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ก ๋์์ค๋ค.
๐ฃ ๋ช ์์ ํ์
function greet(person: string, date: Date) {
console.log(`Hello ${person}, today is ${date.toDateString()}!`);
}
greet("Maddison", Date());
// Argument of type 'string' is not assignable to parameter of type 'Date'.
greet("Maddison", new Date());
โฐ Date()๋ฅผ ํธ์ถํ๋ฉด string์ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ํจ์ ์ธ์๋ก ์ฃผ์๋ Date ํ์ ๊ณผ ๋ง์ง ์์ ์๋ฌ๊ฐ ๋๋ค.
let msg = 'hello there!";
// ๋ง์ฐ์ค ํธ๋ฒํ๋ฉด ํ๋ฉด์ 'let msg: string' ์ด๋ผ๊ณ ๋ฌ๋ค.
โฐ msg๊ฐ string ํ์ ์ ๊ฐ๋๋ค๋ ๊ฑด TS์๊ฒ ์๋ ค์ฃผ์ง ์์๋ ์์์ ์์๋ผ ์ ์๋ค.
โฐ ์ด๋ป๊ฒ๋ ํ์ ์์คํ ์ด ์์์ ํ์ ์ ์์๋ผ ์ ์๋ค๋ฉด ๊ตณ์ด ํ์ ํ๊ธฐ๋ฅผ ์ ์ง ์๋ ๊ฒ์ด ์ข๋ค.
๐ฃ ์ง์์ง ํ์
function greet(person: string, date: Date) {
console.log(`Hello ${person}, today is ${date.toDateString()}!`);
}
"use strict";
function greet(person, date) {
console.log("Hello ".concat(person, ", today is ").concat(date.toDateString(), "!"));
}
greet("Maddison", new Date());
โฐ ์์ .tsํ์ผ์ ๋ณํํ๋ฉด ๋ฐ์ .jsํ์ผ์ ์ป์ ์ ์๋ค.
โฐ ๋๋ถ๋ถ์ TS ์ ์ฉ ์ฝ๋๋ ์ ๊ฑฐ๋๊ณ , ํ์ ํ๊ธฐ ๋ํ ์์ ํ ์ง์์ง๋ค.
๐ฃ ๋ค์ด๋ ๋ฒจ๋ง : ์์ ๋ฒ์ ์ ECMAScript๋ฅผ ํ์ ๋ฒ์ ์ ๊ฒ์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ
`Hello ${person}, today is ${date.toDateString()}!`;
"Hello " + person + ", today is " + date.toDateString() + "!";
โฐ ํ ํ๋ฆฟ ๋ฌธ์์ด์ ์ฐ๊ฒฐ ์ฐ์ฐ์(+)๋ก ์ด๋ฃจ์ด์ง ์ผ๋ฐ ๋ฌธ์์ด๋ก ๋ณํ๋๋ค.
โฐ ํ ํ๋ฆฟ ๋ฌธ์์ด์ ECMAScript 2015์์ ๋ฑ์ฅํ ๊ธฐ๋ฅ์ด๊ณ , TS๋ ์ ๋ฒ์ ์ ์ฝ๋๋ฅผ ECMAScript3 ๋๋ ECMAScript5 ๊ฐ์ ์์ ๋ ๋ฒ์ ์ ๊ฒ๋ค๋ก ๋ค์ ์์ฑํด ์ค๋ค.
๐ฃ ์๊ฒฉ๋
โ๏ธ ์ผ๊ณ ๋ ์ ์๋ ๋ช ๊ฐ์ง์ ํ์ ๊ฒ์ฌ ์๊ฒฉ๋ ํ๋๊ทธ๊ฐ ์กด์ฌํ๋ค.
โฐ --strict ํ๋๊ทธ๋ฅผ ์ค์ ํ๊ฑฐ๋ tsconfig.json์ "strict":true ๋ฅผ ์ถ๊ฐํ๋ฉด ๋ชจ๋ ํ๋๊ทธ๋ฅผ ๋์์ ํ์ฑํ ํ๋ค.
โฐ noImplicitAny : ํ์ ์ด any๋ก ์๋ฌต์ ์ผ๋ก ์ถ๋ก ๋๋ ๋ณ์์ ๋ํ์ฌ ์ค๋ฅ๋ฅผ ๋ฐ์์ํจ๋ค.
โฐ strictNullChecks : null๊ณผ undefined๋ฅผ ๋ณด๋ค ๋ช ์์ ์ผ๋ก ์ฒ๋ฆฌํด์ค๋ค.
๐ ํ์ ์คํฌ๋ฆฝํธ ํธ๋๋ถ
'Study > TypeScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TS] ํจ์์ ๋ฉ์๋ (0) | 2023.02.01 |
---|---|
[TS] ๊ฐ์ฒด์ ํ์ (2) | 2023.02.01 |
[TS] ํ์ ์คํฌ๋ฆฝํธ ํ๋ก์ ํธ ๋ง๋ค๊ธฐ (0) | 2023.01.30 |
[TS] 2. Usage (0) | 2023.01.27 |
[TS] 1. Fundamentals (0) | 2023.01.26 |