let's get IT with DAVINA ๐ป
TypeScript๋? & Types ๋ณธ๋ฌธ
TypeScript
- Javascript with syntax for types
- a strongly typed programming language that builds on JavaScript, giving you better tool at any scale
- JS์ ํ์ ์์ ์ฑ โฌ ๋ฒ์ !
- TypeScript & VS Code ⇒ ๋ ๋ค Microsoft์์ ๊ฐ๋ฐํด์ ์ฃฝ์ด ์ ๋ง์
JavaScript VS TypeScript
- JS ⇒ ๊ฐ๋ฐ์๋ค์ด ๋ฉ์ฒญํ ์ค์๋ฅผ ํด๋ ์ดํดํด์ฃผ๋ ค ํ๋ ์ ์ฐํ ์ธ์ด
- [1,2,3,4]+ false(boolean) = “1,2,3,4false”(string)
- ⇒ TS๋ ๋ง๋ ์๋๋ ํธ์ถ์ ํ์ฉํ์ง ์์
- ๋ฌธ์ ์๋ ํธ์ถ์ ์ ์ ์ ์ปดํจํฐ์์ ์ด๋ฏธ ์คํํ๊ณ ๋์ ์๋ฌ๋ผ๊ณ ๋งํด์ค
- ์ด๊ฒ์ด ๋ฐํ์ ์๋ฌ!! = ์ฌ์ฉ์๊ฐ ์ง์ ์ ์ ์๋ ์๋ฌ..์ํํด
- ⇒ TS๋ (์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ ์) ํธ์ถ์ ํ๊ธฐ๋ ์ ์ ๋ง์์ค
const nico = {name:"nico"} nico.hello() => uncaught TypeError: nico.hello is not a function
Overview of Typescript
2-1. TS ์๋์ด ์ด๋ป๊ฒ ๋๋๊ฑธ๊น?
- Typescript๋ฅผ ์์ฑํ๋ค
- Compile์ ํตํด TS→JS๋ก ๋ณํ (๋ธ๋ผ์ฐ์ ๋ JS์ฝ๋๋ง ์ฝ์ ์ ์์ด์ ๋ณํํ๋๊ฑฐ์)
- TS ์ฝ๋์ ์๋ฌ๊ฐ ์์ผ๋ฉด ์ ์ด์ JS๋ก ์ปดํ์ผ๋์ง ์์
2-2. Explicit VS Implicit Types
- Explicit Types: Type Checker (TS์ syntax)
- ํ์ ์ด ๋ญ์ง ๋ช ํํ ์ง์ ํด์ฃผ๋ ๊ฒ!
let a : string = "hi" let b : boolean = false let c : number[] //์ซ์๋ก ์ด๋ค์ง ๋ฐฐ์ด์ด์ผ! ์ง์ !
- Implicit Types
- ํ์ ์ TS๊ฐ ์์์ ์ถ๋ก ํ๋๊ฒ
let a = "hello" //string์ด๊ตฌ๋~
2-3. Types of TS (1)
- age? ์ฒ๋ผ ๊ฐ์ ์ ๋ฌด๋ฅผ optional๋ก ์ง์ ํด์ฃผ๋ฉด ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ undefined ๋ฐํ!
const player : { //player์ ๊ฐ์ฒด์ผ
name:string, //name์ stringํ์
์ด์ผ
age?:number //age๋ optionalํด์ ์์ด๋ ๋๊ณ , ์์ด๋ ๋ผ! ๊ทธ๋ฆฌ๊ณ ์ซ์์ผ
} = {
name:"vini" //๊ทธ๋์ ๊ทธ ๊ฐ์ฒด๊ฐ ๋ญ๋ฐ!?
}
if(player.age<10) //-> error! age๊ฐ undefined์ธ๊ฒ๊ฐ์๋ฐ?!
if(player.age && player.age<10) //ok to go
- Allias Type (์ฝ๋ ์ฌ์ฌ์ฉ)
type Player = { //type [๋๋ฌธ์]
name:string,
age?:number
}
const vini : Player = {
name: "vini"
}
const bini : Player = {
name: "bini",
age: 28
}
- ํจ์์์๋?
- ์ ๋ฌ์ธ์()๋ท๋ถ๋ถ์ type ์ถ๊ฐ ๊ฐ๋ฅ
function playerMaker(name:string) : Player { return { name } } const playerMaker = (name:string) : Player => ({name}) const vini = playerMaker("vini") //ok to go vini.age = 28 //function ๋ค์ :Player ๋ถ์ด๋ฉด ok to go
2-4. Types of TS (2)
- readonly
- type ์ง์ ํด์ค ๋ ์์ ์จ์ค์
- ๋ค๋ฅธ๊ฑธ๋ก ์์ ํ์ง ๋ชปํ๊ฒ ํด์ค์ READ ONLY
const names: readonly string[] = ["1","2"] //names.push ๋ถ๊ฐ๋ฅ!
- Tuple
- ์ ํด์ง ๊ฐฏ์์ ์์๋ฅผ ๊ฐ์ ธ์ผ ํ๊ณ ⇒ 3๊ฐ!
- ์ํ๋ ์์์ ๋ง๋ ํ์ ์ ๊ฐ์ ธ์ผ ํ๋ค! ⇒ string, number, boolean์์๋๋ก ํ์ ๋ ์ง์ผ์!
const player: [string, number, boolean] = ["vini", 28, true]
- any
- TS์์ ๋ฒ์ด๋๋ ์ฅ์น (์์ฃผ ์ฐ์ง๋ง! ํ์ถ๊ตฌ๋ก ์ฐ๊ณ ์ถ์๋๋ง!!)
const a : any[] = [1,2,3,4] //any[]์ด๋ ๊ฐ๋ฅํด์ง const b : any = true a+b //any๋ฅผ ์ฐ๋ฉด ๊ฐ๋ฅํด์ ธ๋ฒ๋ฆผ.. JS๋ ๋ค๋ฅผ๊ฒ ์์ด!
2-5. Types of TS (3)
- unkwown
- api์์ response๊ฐ ์ด๋ค type์ผ๋ก ์ฌ ๋ ๋ชจ๋ฅผ ๋ use
- ๋ณ์๊ฐ ๋ฌด์จ type์ธ์ง ๋ชจ๋ฅผ ๋ use
let a : unknown if(typeof a === "number") { let b = a+1 } if(typeof a === "string"){ let b = a.toUpperCase(); }
- void
- ๋ฐ๋ก ์ง์ ํ์ง ์์๋ ๋จ
- function์ด ์๋ฌด๊ฒ๋ return์ ์ํ ๋ use
function hello(){ console.log('x') }
- never
- function์ด never returnํ์ง ์๊ณ error์ throwํ ๋ use
function hello():never{ throw new Error("xxx") }
- type์ด ๋ ๊ฐ์ง์ผ ๋ use
function hello(name:string|number){ if(typeof name==="string"){ name //string } else if (typeof name === "number){ name //number } else { name //never } }
'DEV_IN > TypeScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
โ๏ธ ์์ฃผ ๋ณผ ์ ์๋ Errors (0) | 2023.02.17 |
---|---|
TypeScript(apply) (2) | 2023.02.17 |
TypeScript(Interface) (4) | 2023.02.16 |
TypeScript(Classes) (4) | 2023.02.12 |
TypeScript (Function) (3) | 2023.02.09 |
Comments