λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

#1 Language πŸ‘„

(47)
[Typescript] λ°μ½”λ ˆμ΄ν„° Decorators 메타 ν”„λ‘œκ·Έλž˜λ° ν•˜λŠ” 데 맀우 μœ μš©ν•˜κ²Œ μ‚¬μš© 됨 메타 ν”„λ‘œκ·Έλž˜λ°μ΄λž€? end userκ°€ νŽ˜μ΄μ§€λ₯Ό λ°©λ¬Έν•˜λŠ”λ°, 보톡 κ³§λ°”λ‘œ 영ν–₯을 주기에 λ°μ½”λ ˆμ΄ν„°λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμŒ λŒ€μ‹ μ— μ½”λ“œλ₯Ό μ“°λŠ” 데 μ ν•©ν•˜λ„λ‘ λ§Œλ“€μ–΄ λ°μ½”λ ˆμ΄ν„°λ₯Ό λ‹€λ₯Έ κ°œλ°œμžλ“€μ΄ μ‚¬μš©ν•˜κΈ° μ‰½κ²Œ 함 λ°μ½”λ ˆμ΄ν„°λŠ” μ‹€μ²΄ν™”λ˜κΈ° μ „ ν΄λž˜μŠ€κ°€ μ •μ˜λ§Œ 돼도 μ‹€ν–‰ 됨 function Logger(constructor: Function) { console.log("Logging..."); console.log(constructor); } @Logger class Person1 { name = "Yum"; constructor() { console.log("Creating person object..."); } } const pers = new Person1(); co..
[Typescript] μ œλ„€λ¦­ Generic <T> λ°°μ—΄ νƒ€μž… μ–΄λ–€ νƒ€μž…μ˜ 데이터가 μ €μž₯λ˜λ“  μƒκ΄€ν•˜μ§€ μ•ŠμœΌλ©° μ €μž₯ν•˜λŠ” μš”μ†Œκ°€ λ¬Έμžμ—΄ λͺ©λ‘, μˆ«μžν˜• λͺ©λ‘, 객체 λͺ©λ‘, ν˜Όν•©λœ λ°μ΄ν„°μ˜ λͺ©λ‘μ΄λ“  μƒκ΄€ν•˜μ§€ μ•Šμ§€λ§Œ 적어도 정보가 μ €μž₯λ˜λŠ” 것인지에 λŒ€ν•΄μ„œλŠ” 확인 함 μ œλ„€λ¦­ νƒ€μž… Generic νƒ€μž… μ•ˆμ „μ„±κ³Ό κ²°ν•©λœ μœ μ—°μ„±μ„ 제곡 μ „λ‹¬ν•˜λŠ” κ°’μ΄λ‚˜ ν΄λž˜μŠ€μ—μ„œ μ‚¬μš©ν•˜λŠ” 값을 μœ μ—°ν•˜κ²Œ μ§€μ •ν•  수 있음 μΆ”κ°€ν•œ μ œμ•½ 쑰건이 μžˆλ‹€λ©΄ κ·Έ 쑰건만 μ€€μˆ˜ν•˜λ©΄ 됨 const names: Array = []; // string [] const names: Array = []; // string [], number [] promise νƒ€μž… const promise: Promise = new Promise((resolve, reject) => { setTimeout(() => { resolv..
[Typescript] κ³ κΈ‰ νƒ€μž… νƒ€μž… κ°€λ“œ Narrowing μš”μ•½ typeof λ³€μˆ˜ 속성λͺ… in 였브젝트 자료 μΈμŠ€ν„΄μŠ€ instanceof λΆ€λͺ¨ νƒ€μž…κ°€λ“œλŠ” νŠΉμ • μ†μ„±μ΄λ‚˜ λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜κΈ° 전에 그것이 μ‘΄μž¬ν•˜λŠ”μ§€ ν™•μΈν•˜κ±°λ‚˜ νƒ€μž…μ„ μ‚¬μš©ν•˜κΈ° 전에 이 νƒ€μž…μœΌλ‘œ μ–΄λ–€ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆλŠ”μ§€λ₯Ό ν™•μΈν•˜λŠ” κ°œλ… λŸ°νƒ€μž„ μ‹œ νŠΉμ • νƒ€μž…μœΌλ‘œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κΈ° 전에 ν•΄λ‹Ή νƒ€μž…μ„ κ²€μ‚¬ν•˜λŠ” μ½”λ“œ νŒ¨ν„΄ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κΈ° 전에 νƒ€μž…μ„ κ²€μ‚¬ν•˜μ—¬ λŸ°νƒ€μž„ 였λ₯˜λ₯Ό λ°©μ§€ν•  수 있음 객체의 경우, instanceofλ‚˜ in을 μ‚¬μš© λ‹€λ₯Έ νƒ€μž…λ“€μ˜ 경우 typeofλ₯Ό μ‚¬μš© // typeof type Combinable = string | number; function add(a: Combinable, b: Combinable){ if(typeof a === 'string' ||..
[Typescript] 클래슀 & μΈν„°νŽ˜μ΄μŠ€ private : μƒμ„±λœ 객체 λ‚΄λΆ€μ—μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯ν•œ 속성 protected : privateκ³Ό λΉ„μŠ·ν•˜μ§€λ§Œ privateκ³Ό λ‹€λ₯Έ 점은 이 ν΄λž˜μŠ€μ—μ„œλΏ μ•„λ‹ˆλΌ 이 클래슀λ₯Ό ν™•μž₯ν•˜λŠ” λͺ¨λ“  ν΄λž˜μŠ€μ—μ„œλ„ μ‚¬μš© κ°€λŠ₯ 함 readonly ν‚€μ›Œλ“œ μ΄ˆκΈ°ν™” 쀑에 ν•œ 번만 μ‚¬μš© κ°€λŠ₯ νŠΉμ • 속성이 μ΄ˆκΈ°ν™” 되고 λ‚˜λ©΄ μ΄ν›„μ—λŠ” λ³€κ²½λ˜μ–΄μ„œλŠ” μ•ˆλ¨ 좔가적인 νƒ€μž… μ•ˆμ „μ„±μ„ 더해주고 μ˜λ„λ₯Ό λͺ…ν™•ν•˜κ²Œ ν•΄μ€Œ 약식 μ΄ˆκΈ°ν™” // μ΄ˆκΈ°ν™” 약식 μ „ class Department { private id: string; private name: string; private employees: string[] = []; constructor(id: string, name: string) { this.id = n; this.name = n; } } /..
[Typescript] ꡬ쑰 λΆ„ν•΄ ✍️ ꡬ쑰 λΆ„ν•΄λž€? ✍️ λ°°μ—΄μ—μ„œ μš”μ†Œλ₯Ό μΆ”μΆœν•˜λŠ” 것 const [hobby1, hobby2, ...remainingHobbies] = hobbies; 첫번째 μš”μ†Œ hobby1 μ΄λΌλŠ” μ΄λ¦„μœΌλ‘œ const에 μ €μž₯ λ‘λ²ˆμ§Έ μš”μ†Œ hobby2 λΌλŠ” μ΄λ¦„μœΌλ‘œ const에 μ €μž₯ λ¬Έμžμ—΄μ˜ μš”μ†Œκ°€ 2개 이상인 경우 λ§€κ°œλ³€μˆ˜λ₯Ό μΆ”κ°€ν•˜μ—¬ hobby1, hobby2μ—μ„œ μΆ”μΆœν•˜μ§€ μ•Šμ€ λ‚˜λ¨Έμ§€ μš”μ†Œκ°€ λͺ¨λ‘ remainingHobbiesλΌλŠ” μƒˆ 배열에 μ €μž₯λ˜λ―€λ‘œ ν•΄λ‹Ή 배열에 병합 됨 ꡬ쑰 λΆ„ν•΄λŠ” μ›λž˜μ˜ 배열을 λ°”κΎΈμ§€ μ•ŠμŒ μƒˆλ‘œμš΄ λ°°μ—΄λ‘œ 생성 배열은 μ •λ ¬λœ λͺ©λ‘μ΄λ―€λ‘œ μš”μ†ŒλŠ” μˆœμ„œλŒ€λ‘œ μΆ”μΆœ 됨 ν•˜μ§€λ§Œ μˆœμ„œκ°€ 항상 보μž₯λ˜μ§€λŠ” μ•Šμ•„ μœ„μΉ˜λ³„λ‘œ μš”μ†Œλ₯Ό μΆ”μΆœν•˜λŠ” 것이 μ•„λ‹Œ ν‚€ μ΄λ¦„μœΌλ‘œ μš”μ†Œλ₯Ό μΆ”μΆœ 함 λ°°μ—΄λΏλ§Œ μ•„λ‹ˆλΌ 객체도 λ™μΌν•˜κ²Œ μ‚¬μš© 마..
[Typescript] TypeScript 컴파일러(및 ꡬ성) watch mode : 변경사항이 μžˆμ„λ•Œλ§ˆλ‹€ μžλ™μœΌλ‘œ 컴파일 tsc app.ts -w 단점은 이 νŒŒμΌμ„ ꡬ체적으둜 μ§€μ •ν•΄μ•Ό 함 κ·Έλ ‡κΈ° λ•Œλ¬Έμ— 큰 ν”„λ‘œμ νŠΈμ—μ„œλŠ” 보톡 μ‚¬μš©ν•˜μ§€ μ•ŠμŒ λͺ¨λ“  ts파일 컴파일 tsc —init : tsconfig.json 파일 생성 이 ν”„λ‘œμ νŠΈλ₯Ό νƒ€μž…μŠ€ν¬λ¦½νŠΈ ν”„λ‘œμ νŠΈλΌκ³  μ²˜μŒμ— μ§€μ •ν•˜λ©΄μ„œ ν•œ 번만 μ‹€ν–‰ν•˜λ©΄ 됨 이 ν”„λ‘œμ νŠΈλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈκ°€ κ΄€λ¦¬ν•œλ‹€λŠ” 뜻 이 μ»€λ§¨λ“œκ°€ μ‹€ν–‰λ˜λŠ” ν΄λ”μ˜ λͺ¨λ“  ν•­λͺ©μ„ μ•Œλ €μ£ΌλŠ” μ—­ν•  λ”°λΌμ„œ μ˜¬λ°”λ₯Έ 폴더에 μœ„μΉ˜ν•˜λŠ” 것이 μ€‘μš” tsc : λͺ¨λ“  ts파일 컴파일 μžλ™μœΌλ‘œ js파일 생성 λͺ¨λ“  νƒ€μž…μŠ€ν¬λ¦½νŠΈ νŒŒμΌμ— κ΄€μ°° λͺ¨λ“œ μ μš©ν•˜κΈ° λͺ¨λ“  ts파일 컴파일 ν•œ ν›„ tsc -w μž…λ ₯ν•˜λ©΄ λͺ¨λ“  tsνŒŒμΌμ— κ΄€μ°° λͺ¨λ“œκ°€ 적용 됨 이제 λ³€κ²½ 사항을 μ μš©ν•˜κ³  μ €μž₯ν•˜λ©΄ λ³€κ²½λœ 파일이..
[Typescript] Typescript κΈ°λ³Έ & κΈ°λ³Έ νƒ€μž… Using Type number JSλ‚˜ TSμ—μ„œ number νƒ€μž…μ€ ν•˜λ‚˜λΏ string ‘Hi’, “Hi”,Hi boolean true, false μžλ°”μŠ€ν¬λ¦½νŠΈ 차이 μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 동적 νƒ€μž… λ¬Έμžμ—΄μ„ ν• λ‹Ήν•  λ•Œ μ²˜μŒμ— μˆ«μžν˜• λ³€μˆ˜κ°€ μžˆλ”λΌλ„ μ „ν˜€ 문제 μ—†μŒ κ·Έλž˜μ„œ νŠΉμ • νƒ€μž…μ— μ˜μ‘΄ν•˜λŠ” μ½”λ“œκ°€ μžˆλŠ” 경우, λŸ°νƒ€μž„μ—μ„œ ν˜„μž¬ νƒ€μž…μ„ 확인할 수 μžˆλŠ” typeofλ₯Ό μ‚¬μš© 반면, νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” 정적 νƒ€μž… λ³€μˆ˜μ™€ λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…μ„ λ¨Όμ € μ •μ˜ν•¨ λŸ°νƒ€μž„ 쀑에 κ°‘μžκΈ° λ³€κ²½λ˜μ§€ μ•ŠμŒ μˆ«μžν˜•μœΌλ‘œ μ„€μ •ν•œ λ³€μˆ˜μ— λ¬Έμžμ—΄μ„ ν• λ‹Ήν•˜λ©΄ μ—λŸ¬λ°œμƒ νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈλ³΄λ‹€ 훨씬 λ§Žμ€ νƒ€μž…μ„ μ•Œκ³  있음 κ²°λ‘  : νƒ€μž…μŠ€ν¬λ¦½νŠΈ νƒ€μž…μ€ 컴파일 쀑에 ν™•μΈλ˜λŠ” 반면, μžλ°”μŠ€ν¬λ¦½νŠΈ νƒ€μž…μ€ λŸ°νƒ€μž„ 쀑에 확인 됨 μΆ”κ°€: νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” νƒ€μž…μ„ λͺ…μ‹œμ ..
[Javascript] λͺ¨λ“ˆ (Module) λͺ¨λ“ˆν™”(Modularity) ν”„λ‘œκ·Έλž˜λ°μ˜ λͺ©ν‘œ 큰 ν”„λ‘œκ·Έλž¨μ„ μ½”λ“œ λͺ¨λ“ˆλ‘œ λΆ„λ¦¬ν•΄μ„œ λͺ¨λ“ˆ κ°œλ°œμžκ°€ μ˜ˆμΈ‘ν•˜μ§€ λͺ»ν•œ μƒν™©μ—μ„œλ„ μ½”λ“œ 전체가 μ •ν™•νžˆ μ‹€ν–‰λ˜λ„λ‘ ν•˜κΈ° μœ„ν•¨ μ‹€μš©μ μΈ κ΄€μ μ—μ„œ (Modularity)λŠ” ν”„λ‘œκ·Έλž¨μ˜ μ„ΈλΆ€ 사항을 μΊ‘μŠν™”ν•˜κ³  μ „μ—­ λ„€μž„ 슀페이슀λ₯Ό κΉ”λ”ν•˜κ²Œμœ μ§€ν•΄μ„œ λͺ¨λ“ˆμ΄ λ‹€λ₯Έ λͺ¨λ“ˆμ˜ λ³€μˆ˜, ν•¨μˆ˜, 클래슀λ₯Ό μˆ˜μ •ν•˜λŠ” 사고λ₯Ό λ§‰λŠ” 것을 말함 μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œμ˜ λͺ¨λ“ˆ μ΅œκ·ΌκΉŒμ§€ μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” λͺ¨λ“ˆμ„ μ§€μ›ν•˜μ§€ μ•Šμ•˜κ³  큰 ν”„λ‘œμ νŠΈ λ‹¨μœ„λ‘œ μΌν•˜λŠ” ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” 클래슀, 객체, ν΄λ‘œμ €μ—μ„œ νŒŒμƒλœ λ―Έμ•½ν•œ λͺ¨λ“ˆμ„±μ„ μ΅œλŒ€ν•œ μ΄μš©ν•΄μ•Ό ν–ˆμŒ ν΄λ‘œμ € 기반 λͺ¨λ“ˆμ„±μ΄ μ½”λ“œ λ²ˆλ“€λ§λ„κ΅¬μ˜ 지원에 νž˜μž…μ–΄ require( ) ν•¨μˆ˜λΌλŠ” ν˜•νƒœλ‘œ μ‹€μš©ν™” 됐으며 λ…Έλ“œμ—μ„œ 이 μ‹œμŠ€ν…œμ„ λ„μž… require( )에 κΈ°λ°˜ν•œ λͺ¨λ“ˆμ€ λ…Έλ“œ ν”„λ‘œκ·Έλž˜..

LIST