728x90
λ°˜μ‘ν˜•

🎈주제: νƒ€μž…μŠ€ν¬λ¦½νŠΈμ˜ κΈ°λ³Έ νƒ€μž…

 

ν”„λ‘ νŠΈμ—”λ“œλŠ” 이제 νƒ€μž…μŠ€ν¬λ¦½νŠΈκ°€ ν•„μˆ˜λΌκ³  해도 과언이 μ•„λ‹ˆλ‹€.

1. 기본을 배우기 전에 μ•Œμ•„μ•Ό ν•  것

νƒ€μž… 슀크립트λ₯Ό μ‚¬μš©ν•˜λ©΄μ„œ κΌ­ κΈ°μ–΅ν•΄μ•Ό ν•  것듀이 λͺ‡ κ°€μ§€ μžˆλ‹€.

이 뢀뢄은 두고두고 κΈ°μ–΅ν•΄μ„œ 야무진 κ°œλ°œμžκ°€ λ˜λ„λ‘ ν•˜μž!

 

1-1. any μ§€μ–‘ν•˜κΈ°

νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” 기본적으둜 μžλ°”μŠ€ν¬λ¦½μ— νƒ€μž…μ„ 묻힌(?) 것이라고 보면 λœλ‹€.

ν•˜μ§€λ§Œ "any" νƒ€μž…μ„ 묻히게 λœλ‹€λ©΄...

κ·Έ μ½”λ“œλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈλ‚˜ λ‹€λ¦„μ—†λŠ” μ½”λ“œκ°€ λœλ‹€.

κ·ΈλŸ¬λ‹ˆκΉŒ μ™ λ§Œν•˜λ©΄,, μ•„λ‹ˆ μ•„μ˜ˆ μ“°μ§€ μ•ŠλŠ” 것을 λͺ©ν‘œλ‘œ ν•˜μž!

 

1-2. κ·ΈλŸΌμ—λ„ λΆˆκ΅¬ν•˜κ³ ,,,

μš°λ¦¬κ°€ 아무리 λ…Έλ ₯해도 any μ‚¬μš©μ΄ λΆˆκ°€ν”Όν•  λ•Œκ°€ μžˆμ„ 것이닀!

그럴 λ•Œ 쓰도둝 ν•˜μž.

  1. unknown
  2. Generic
  3. Type Guard
  4. Type Assertion
  5. ban-ts-comment
// @ts-expect-error
// @ts-ignore
// @ts-nocheck
// @ts-check

 

1-3. 이건 κΌ­ ν•˜μž

  1. strictNullChecks
  2.  λ¬Έμ„œν™”
  3. μ„  타이핑 ν›„ κ΅¬ν˜„
  4. μˆ˜λ§Žμ€ ꡬ글링
  5. μ»¨λ²€μ…˜ & νŒ€ λ¬Έν™” μ§€ν–₯ (νŒ€ λ‹¨μœ„λ‘œ,, ν™˜κ²½μ— 따라 μ‚¬μš©ν•˜λŠ” 법이 λ‹€λ₯΄λ‹€!)

 

1-4. 자 이제 μ‹œμž‘μ΄λ‹€. 

λ„ˆλ¬΄ 잘 돼있기 λ•Œλ¬Έμ— TS - playgroundμ—μ„œ μ—°μŠ΅μ„ ν•΄λ³΄μž!


2. κΈ°λ³Έ νƒ€μž…

 

2-1. type annotation

 

const num: number = 1
const str: string = 'λ¬Έμžμ—΄'

 

μ΄λ ‡κ²Œ 콜둠(:) λ‹€μŒμ— νƒ€μž…μ„ 뢙이면 λœλ‹€.

 

2-2. μ›μ‹œ νƒ€μž…

이 μΉœκ΅¬λ“€μ€ νƒ€μž… 좔둠이 κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— νƒ€μž… μ–΄λ…Έν…Œμ΄μ…˜μ„ ꡳ이 μ•ˆ 써도 λœλ‹€.

 

const num: number = 123;
const str: string = '123';
const boll: boolean = true;

 

2-3. 객체 νƒ€μž…

 

// any와 λ‹€λ₯Όκ²Œ μ—†λŠ” 상황
const obj: object = {
	str: 'str',
    num: 123,
    child: {
    	str: 'str1',
        num: 123123,
    }
}
// μ’€ 더 μžμ„Έν•˜κ²Œ νƒ€μž…μ„ λ¬˜μ‚¬ν•˜μž
const obj2: { str: string, num: number, child: { str: string, num: number } } = {
	str: 'str',
    num: 123,
    child: {
    	str: 'str1',
        num: 123123,
    }
}

 

2-4. ν•¨μˆ˜ νƒ€μž…

ν•¨μˆ˜νƒ€μž…μ€ λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…κ³Ό λ°˜ν™˜ν•˜λŠ” νƒ€μž… 2κ°€μ§€κ°€ ν•„μš”ν•˜λ‹€.

 

function sum(num1: number, num2: number): number {
	return num1 + num2
}

 

const func = (str1: string, str2: string): string => {
	return str1 + ' ' + str2;
}

 

const func = (obj: { str1: string, str2: string }) => {
	return obj.str1 + ' ' + obj.str2;
}

 

2-5. λ°°μ—΄ νƒ€μž…

배열은 μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ 객체둜 μ·¨κΈ‰λ˜λ‹ˆ μ£Όμ˜ν•˜μž!

const strArr: string[] = ['qwe', 'rty'];

const strArr: Array<string> = ['qwe', 'rty'];

 

2-6. λ¦¬ν„°λŸ΄ νƒ€μž…

let은 μž¬ν• λ‹Ήμ΄ κ°€λŠ₯ν•˜λ―€λ‘œ, νƒ€μž… 좔둠이 μ›μ‹œ νƒ€μž…μ΄ λœλ‹€.

ν•˜μ§€λ§Œ, const μž¬ν• λ‹Ήμ΄ λΆˆκ°€λŠ₯ν•˜λ―€λ‘œ, νƒ€μž… 좔둠이 κ°’ μžμ²΄κ°€ λœλ‹€.

let letString = 'Hello';
// letString νƒ€μž… μΆ”λ‘ : string

const constString = 'Hello';
// constString νƒ€μž… μΆ”λ‘ : 'Hello'

 

2-7. νŠœν”Œ νƒ€μž…

길이 κ³ μ • & 인덱슀 νƒ€μž…μ΄ κ³ μ •λœ 배열을 λ§ν•œλ‹€.

μ—¬λŸ¬ λ‹€λ₯Έ νƒ€μž…μœΌλ‘œ 이루어진 배열을 μ•ˆμ „ν•˜κ²Œ κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄μ„œ λ“±μž₯ν•˜μ˜€λ‹€.

 

const tupleArr:[string, number, string, boolean] = ['a', 1, 'c', true];

 

λ°°μ—΄ νƒ€μž…μ˜ 길이 쑰절 κ°€λŠ₯

 

const tupleArr2: [number, ... string[]] = [1, 'a', 'b', 'c'];

 

2-8. undefined / null

νƒ€μž…μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” undefined / null을 κ³ μœ ν•œ νŠΉλ³„ν•œ νƒ€μž…μœΌλ‘œ μΈμ •ν•œλ‹€.

(μžλ°”μŠ€ν¬λ¦½νŠΈλ„ λ§ˆμ°¬κ°€μ§€!)

const nullValue: null = null;

const undefinedValue: undefined = undefined;

 

ν•˜μ§€λ§Œ,, μ›¬λ§Œν•΄μ„œλŠ” μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 것을 μΆ”μ²œν•œλ‹€.

μ’€ 더 μ„Έλ°€ν•œ κ·œμΉ™μ„ κ°€μ§€κ³  μ‚¬μš©ν•˜λŠ” 것을 μ§€ν–₯ν•©λ‹ˆλ‹€!

 

2-9. any

 

λͺ¨λ“  κ°’(νƒ€μž…)의 집합이닀. λ”°λΌμ„œ, anyλ₯Ό μ‚¬μš©ν•˜κ²Œ λœλ‹€λ©΄ μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•˜λŠ” 것과 κ°™λ‹€κ³  λ³Ό 수 μžˆλ‹€.

λ•Œλ¬Έμ— νƒ€μž…μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•  λ•ŒλŠ”

  • noImplicitAny
  • strict μ˜΅μ…˜ true

두 μ˜΅μ…˜μ„ μ‚¬μš©ν•˜λŠ” 것을 ꢌμž₯ν•œλ‹€

 

2-10. unknown

 

μƒˆλ‘œμš΄ μ΅œμƒμœ„ νƒ€μž…μ΄λ‹€.

any처럼 λͺ¨λ“  값을 ν—ˆμš©ν•˜μ§€λ§Œ, μƒλŒ€μ μœΌλ‘œ μ—„κ²©ν•˜λ‹€.

Tsμ—μ„œλŠ” νƒ€μž…μΆ”λ‘ μ—μ„œ unknown이 λ‚˜μ˜€λŠ” κ²½μš°κ°€ μ—†μœΌλ‹ˆ, κ°œλ°œμžκ°€ 직접 λͺ…μ‹œν•΄μ•Ό ν•œλ‹€.

assertion / νƒ€μž… κ°€λ“œμ™€ ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ λœλ‹€!

 

let num: unknown = 99;

// νƒ€μž… κ°€λ“œλ₯Ό μ‚¬μš©ν•¨
if(typeof num === 'string') {
	console.log('string νƒ€μž…μž…λ‹ˆλ‹€.')
} else {
	console.log('string νƒ€μž…μ΄ μ•„λ‹™λ‹ˆλ‹€.')
}

 

2-11. void

ν•¨μˆ˜μ˜ λ°˜ν™˜μ΄ μ—†λŠ” 경우λ₯Ό λͺ…μ‹œν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€.

보톡 νƒ€μž… 좔둠에 μœ„μž„ν•˜λŠ” κ²½μš°κ°€ λ§Žλ‹€.

JSμ—μ„œλŠ” μ•”μ‹œμ μœΌλ‘œ undefinedλ₯Ό λ°˜ν™˜ν•˜μ§€λ§Œ, Tsμ—μ„œλŠ” 쑰금 λ‹€λ₯΄κΈ° λ•Œλ¬Έμ—..

 

function func(): void {
	console.log('hello')
}

 

 

End.

 

 

728x90
λ°˜μ‘ν˜•

+ Recent posts