TypeScript

  • A javaScript Superset

  • A Language building up on javaScript

  • Adds new Features + Advantages to javascript (์ƒˆ๋กœ์šด ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค)

  • Browser can't execute it

  • Compiled to js

const add = (num1, num2) => num1 + num2;

console.log(add('1','2'));

add('1','2') Unwanted Behavior at Runtime

result 23

Mitigation Stategies

Add if check to add fuction Validate & sanitize user input

const button = document.querySelector("button");
const input1 = document.querySelector("num1");
const input2 = document.querySelector("num2");

const add = (num1, num2) => num1 + num2;

button.addEventListener('click', () => consle.log(input1.value, input2.value));

this is not a technical error

it's not an error which is thrown but it's a logical error

the value of an input element is always a number

using typescript

compiler error

์—ฌ๊ธฐ์„œ !๋Š” ์ ˆ๋Œ€ null์ด ์˜ค์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป์ด๋‹ค.

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š”๊ฒƒ์€ type๊ณผ data๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค.

์žฅ์ 

  • clean code

  • ์˜ค๋ฅ˜ ๋ฐฉ์ง€(์˜ˆ๊ธฐ์น˜ ์•Š์€ ์ƒํ™ฉ์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.)

  • ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •

  • ์ปดํŒŒ์ผํ•˜์—ฌ ์ด์ „๋ฒ„์ „์˜ ๋ธŒ๋ผ์šฐ์ €๋„ ์ง€์›ํ•œ๋‹ค.(Next-gen JavaScript)

  • Non-javaScript Features like Interfaces or Generics

  • Meta-Programming Features like Decorators

  • Rich Configuration Options

  • Modern Tooling that helps even in non-TypeScript Projects

lite server

Core Types

  • number

  • String

  • Boolean

  • Object

  • Array

  • Tuple

  • Enum

  • Any

number

typeScript's type system only helps you during development.

๋ธŒ๋ผ์šฐ์ €๋Š” ์ง€์›ํ•ด์ฃผ์ง€ ์•Š๋Š”๋‹ค.

JavaScript uses "dynamic types" (resolved at runtime), TypeScript uses "static types" (set during development).

Object Types

nickname์„ ์„ค์ •ํ•˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ nickname์„ ํ™•์ธํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ๊ฐœ๋ฐœํ™˜๊ฒฝ์—์„œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์˜ค๋ฅ˜๋ฅผ ์•Œ๋ ค์ค€๋‹ค.

Property 'nickname' does not exist on type '{ name: string; age: number; }'.

6 console.log(person.nickname);

Array

toLocaleUpperCase๋ฅผ ์ผ์„๋•Œ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค.

map์€ Array ๋ฉ”์†Œ๋“œ๊ธฐ ๋•Œ๋ฌธ์— ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์—๋Ÿฌ๋ฅผ ๋ฟœ๋ฟœํ•ด์ค€๋‹ค.

Tuple

Enum

js์—์„œ ์ƒ์ˆ˜๊ด€๋ฆฌ๋ฅผ ํ•  ๋•Œ๋Š” const์™€ ๋Œ€๋ฌธ์ž ๋ณ€์ˆ˜๋ช…์„ ์ด์šฉํ•˜์—ฌ ํ•˜์˜€๋‹ค.

enum์€ ์—ด๊ฑฐํ˜•์œผ๋กœ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

typescript๋กœ ๋ฐ”๊พผ๋‹ค๋ฉด

enum Role { ADMIN, READ_ONLY, AUTHOR }; ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐฐ์—ด์ฒ˜๋Ÿผ 0, 1, 2์— ํ•ด๋‹น๋œ๋‹ค.

๋ณ€ํ™˜ํ•œ ํŒŒ์ผ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž๋„ ๋˜๊ณ  ํ…์ŠคํŠธ๋„ ๋œ๋‹ค.

any

  • ์ตœ๋Œ€ํ•œ ์“ฐ๋Š” ๊ฒƒ์„ ํ”ผํ•˜์ž

  • ๋ช…์‹œ์ ์œผ๋กœ ํƒ€์ž…์„ ๋‚˜ํƒ€๋‚ด์ง€ ์•Š๊ณ  ์œ ์ถ”๋ฅผ ํ†ตํ•œ๋‹ค๋ฉด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์žฅ์  x

Union Types

| ์„ ์ด์šฉํ•˜์—ฌ ํƒ€์ž…์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

Type Aliases

type์„ ์ด์šฉํ•˜์—ฌ ์ƒ๋‹จ์— ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

Function Return Types and Void

parameter ๋งค๊ฐœ๋ณ€์ˆ˜ ์˜†์— : ๋ฅผ ์ด์šฉํ•˜์—ฌ return๊ฐ’์˜ ํƒ€์ž…์„ ์ •์˜ํ•ด์ค€๋‹ค.

return๊ฐ’์ด ์—†์„ ๋•Œ๋‚˜, return;๋งŒ ํ• ๋•Œ void๋กœ ์ •์˜ํ•œ๋‹ค.

undefined ์ธ ๊ฒฝ์šฐ์€ ์•ˆ๋ ๊นŒ?

return; ์ด๋Ÿฐ ์ƒํ™ฉ์„ ๋งํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ void ๋กœ ์“ด๋‹ค.

Function Types

๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ํ•จ์ˆ˜๋กœ ์ง€์ •ํ•  ๋•Œ function์ด๋ผ๊ณ  ํ•˜์ง€ ์•Š๋Š”๋‹ค. (a: number, b: number) => number; ์œผ๋กœ ์ง€์ •ํ•œ๋‹ค.

Function Types and Callbacks

์ธ์ž์— ๋Œ€ํ•œ ์ •์˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์—์„œ ํ•œ๋‹ค. ์˜์‹ฌ์ด ๋“ค์–ด ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ addํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ ํ•  ๋•Œ ๋งˆ์šฐ์Šค๋ฅผ ์˜ฌ๋ ค๋ณด๋ฉด ํƒ€์ž…์ด ์ง€์ •๋˜์–ด ์žˆ๋‹ค.

The Unknown Type

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค. unknown๋กœ ์„ค์ •ํ•œ๊ฑด string์— ํ• ๋‹นํ•  ์ˆ˜ ์—†๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด any๋Š”?

๋ฌธ์ œ ์—†๋‹ค. any๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์ฒ˜๋Ÿผ ์œ ์—ฐํ•˜๊ฒŒ ์“ฐ๊ฒ ๋‹ค๋Š” ๋œป์ด๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ํƒ€์ž…๊ฒ€์‚ฌ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์“ฐ๋Š” ๊ฒƒ์„ ํฌ๊ธฐํ•˜๊ฒ ๋‹ค ๋Š” ๋œป์ด๋‹ค.

userInput์— ํ• ๋‹นํ•˜๋Š” ๋ฒ•

extra check๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

The Never Type

ํ•จ์ˆ˜์—์„œ ์ ˆ๋Œ€ return์ด ์—†์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

generateError์— ๋งˆ์šฐ์Šค๋ฅผ ์˜ฌ๋ฆฌ๋ฉด void๊ฐ€ ๋œจ์ง€๋งŒ ํ›จ์”ฌ ๋ช…ํ™•ํ•˜๋‹ค.

Last updated

Was this helpful?