Skip to content

Latest commit

Β 

History

History
159 lines (110 loc) Β· 4.5 KB

[TS]Type_Basic.md

File metadata and controls

159 lines (110 loc) Β· 4.5 KB

[TS] κΈ°λ³Έ νƒ€μž…μ— λŒ€ν•΄μ„œ

μ΅œλŒ€ν•œ λ‚΄κ°€ μ΄ν•΄ν•˜λŠ”λ§ŒνΌ 적도둝 λ…Έλ ₯ν•˜κ² μŠ΅λ‹ˆλ‹€. 같이 κ³΅λΆ€ν•˜λŠ” μž…μž₯μ—μ„œ μ κ² μŠ΅λ‹ˆλ‹€.

μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό ν•˜κ²Œ 되면 λ‹Ήμ—°ν•˜κ²Œ λ§ˆμ£Όν•˜λŠ” λ¬Έμ œλŠ” νƒ€μž…μ— κ΄€ν•œ μ΄μŠˆμ™€ μ’€ 더 OOP슀럽게 지 수 μ—†μ„κΉŒ ν•˜λŠ” 생각이닀.

그런 단계λ₯Ό 이λ₯΄κ²Œ 되면 λ‹Ήμ—°ν•˜κ²Œ ν•œλ²ˆμ―€μ€ TypeScript λΌλŠ” 아이λ₯Ό μƒκ°ν•˜κ²Œ λœλ‹€.

저도 이번 κΈ°νšŒμ— ν•œλ²ˆ κ³΅λΆ€ν•˜λ €κ³  ν•©λ‹ˆλ‹€. (λͺ¨λ“  λ‚΄μš©μ˜ 기쀀은 TypeScript 곡식 μ‚¬μ΄νŠΈ HandBook κΈ°μ€€μž…λ‹ˆλ‹€.)

TypeScript 의 κΈ°λŠ₯듀은 크게 보면 정적 타이핑과 ECMAScript κ΅¬ν˜„μœΌλ‘œ λ‚˜λ‰  수 μžˆλ‹€.

  • Type annotation & 정적 νƒ€μž… 체크
  • νƒ€μž… μΆ”λ‘ 
  • Interfaces
  • ES2015 Features
    • let & const
    • Block scope
    • Arrow functions
    • Classes
    • Promise
    • Etc…
  • Namespaces & Modules(CommonJS, ES2015, AMD)
  • Generic
  • Mixin

TypeScript μ—μ„œ μ œκ³΅ν•˜λŠ” 기본적인 νƒ€μž…μ— λŒ€ν•΄μ„œ 정리λ₯Ό μ‹œμž‘ν•΄λ³΄μž

νƒ€μž… μ„ μ–Έ

let isDone: boolean = false;

기본적으둜 νƒ€μž… 선언은 콜둠(:) λ₯Ό μ“°κ³  뒀에 νƒ€μž…μ„ μ„ μ–Έν•˜λ©΄ λœλ‹€. 생각보닀 νƒ€μž…μ„ μ„ μ–Έν•˜λŠ” 방법은 κ°„λ‹¨ν•˜κ²Œ λ˜μ–΄μžˆλ‹€.

ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  λ•Œλ„ 콜둠(:) 을 μ‚¬μš©ν•΄μ„œ λ‚˜νƒ€λ‚΄λ©΄ 그런데 λͺ¨μ–‘μƒˆλ₯Ό μ–΄μ§Έ μ΄μƒν•˜λ‹€.(μ²˜μŒλ³΄λŠ” λ‚΄ 기쀀인 것 κ°™λ‹€)

function echo(param: string): string {
 return param;
}

μ™œ Wrapper 객체λ₯Ό μ‚¬μš©ν•˜λ©΄ μ•ˆλ˜λ‚˜?

JavaScript μ—μ„œλŠ” JavaScript primitive type듀에 λŒ€ν•΄ Wrapper 객체λ₯Ό μ œκ³΅ν•œλ‹€. TypeScript μ—μ„œλ„ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.

const isLiar: boolean = true; // OK
const isTruth: Boolean = false; // OK

가급적이면 boolean 을 μ‚¬μš©ν•˜λŠ” 것이 ꢌμž₯λœλ‹€. new Boolean() 으둜 μƒμ„±ν•œ 값을 boolean νƒ€μž…μ— ν• λ‹Ήν•  μˆ˜λŠ” μžˆμœΌλ‚˜ κ·Έ λ°˜λŒ€λŠ” μ•ˆλ˜κΈ° λ•Œλ¬Έμ΄λ‹€.

const isLiar: boolean = new Boolean(true); // OK
const isTruth: Boolean = false; // Error: Type 'Boolean' is not assignable to type 'boolean'.
// 'boolean' is a primitive, but 'Boolean' is a wrapper object. Prefer using 'boolean' when possible.

λ¦¬ν„°λŸ΄ 문법 λŒ€μ‹  μ €λ ‡κ²Œ Wrapper 객체λ₯Ό μ΄μš©ν•˜μ—¬ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜λŠ” 것이 JavaScript μ—μ„œλ„ ꢌμž₯ν•˜μ§€ μ•ŠλŠ” 방법이닀.

Number & number, String & string λ“±μ—μ„œλ„ νƒ€μž…μ„ λͺ…μ‹œν•  λ•Œ μ‚¬μš©ν•˜μ§€ 말자

Basic Type

Boolean

let isDone: boolean = false;

λͺ¨λ‘κ°€ μ•Œκ³  μžˆλŠ” true || false νƒ€μž…μ΄λ‹€. λ„ˆλ¬΄ λ‚˜λ„ μ‹¬ν”Œν•΄μ„œ 적을 것이 μ—†λ‹€.

Number

let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;

μš°λ¦¬κ°€ μ•Œκ³  μžˆλ“―μ΄ 숫자λ₯Ό λ‚˜νƒ€λ‚΄λŠ” Numberνƒ€μž…μ΄λ‹€. λ§ˆμ°¬κ°€μ§€λ‘œ 2μ§„μˆ˜ 8μ§„μˆ˜κ°€ λœλ‹€. μ΄λŠ” ECMA2015 λ₯Ό μ§€μ›ν•œλ‹€λŠ” 말과 λ™μΌν•˜λ‹€.(λͺ¨λ‘κ°€ μ•Œκ³  μžˆκ² μ§€λ§Œ ES6μ—μ„œ 좔가됨)

String

λͺ¨λ‘κ°€ μž˜μ•Œκ³  μžˆλŠ” λ¬Έμžμ—΄νƒ€μž…μ΄λ‹€.

let fullName: string = `Bob Bobbington`;
let age: number = 37;
let sentence: string = `Hello, my name is ${ fullName }.

I'll be ${ age + 1 } years old next month.`;

Array

μžλ°”μ²˜λŸΌ <> μ œλ„€λ¦­μ΄ 생겼닀 μ‹ κΈ°λ°©κΈ°ν•˜λ‹€. (ν•˜λ‚˜ν•˜λ‚˜μ— λ†€λΌλŠ”μ€‘...)

let list: number[] = [1, 2, 3]; // 방법 1
let list: Array<number> = [1, 2, 3]; // 방법 2 

λ‚˜λΌλ©΄ μ•„λž˜μ²˜λŸΌ μ‚¬μš©ν•  λ“― ν•˜λ‹€.

Object

declare function create(o: object | null): void;

create({ prop: 0 }); // OK
create(null); // OK

create(42); // Error
create("string"); // Error
create(false); // Error
create(undefined); // Error

ν¬μ•ˆν•˜λ‹€ Objectνƒ€μž…μΈλ° Number String Blooean이 μ•ˆλœλ‹€.

⭐ 기쑴의 Java μ—μ„œλŠ” λ‹Ήμ—°ν•˜κ²Œ μƒμœ„ νƒ€μž…μΈ Object둜 선언을 ν–ˆλ‹€λ©΄ String, Intλ“±μœΌλ‘œ λ³€ν™˜μ΄ κ°€λŠ₯ν–ˆλŠ”λ° 말이닀.

Null and Undefined

let onlyNull: null = null;

onlyNull = undefined; // OK
onlyNull = false; // error: Type 'boolean' is not assignable to type 'null'.

곡식 λ¬Έμ„œμ— μžˆλ‹€κ³  ν•œλ‹€. 그런데 Null, Undefined둜 선언을 ν•˜λ©΄ μ–΄λ””μ„œ μ‚¬μš©μ„ ν•˜λŠ” κ²ƒμΌκΉŒ? μ•„μ§κΉŒμ§€ κ²½ν—˜μ΄ μ—†μ–΄μ„œ λͺ¨λ₯΄κ² λ‹€.


Reference