✨TypeScript✨

πŸ§‘νƒ€μž…μ„ μ–Έ

πŸ’›string

  const red:string = "red"
  const green:string = "green"
  const myColor:string = `My Color is ${red}.`
  const yourColor:string = 'Your Color is' + green

πŸ’›number

  const integer: number = 6
  const hex: number = 0xf00d //61453
  const nan: number = NaN

πŸ’›Boolean

  const isBoolean: boolean = true
  const inDone: boolean = false

πŸ’›Null, Undefined

  • nullκ³Ό undefinedλŠ” λͺ¨λ“  νƒ€μž…μ˜ ν•˜μœ„νƒ€μž…
  • κ·ΈλŸ¬λ‚˜ μ—„κ²©ν•œ νƒ€μž…λ¬Έλ²•μ—μ„œ λ³€μˆ˜μ— 직접할당은 λΆˆκ°€λŠ₯함
  • voidνƒ€μž…μ—λŠ” undefinedλ₯Ό ν• λ‹Ήν•  수 μžˆλ‹€
  // 직접할당 λΆˆκ°€λŠ₯
  const str:string = null //Error!
  const num:number = undefined //Error!

  //void에 undefined할당은 κ°€λŠ₯
  const voi1: void = null //Error!
  const voi2: void = undefined //Ok!
  • λ³€μˆ˜μ— 값을 μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ μ•ŠμœΌλ©΄ undefinedκ°€ 됨
  • κ·ΈλŸ¬λ‚˜ 값이 μ§€μ •λ˜μ§€ μ•Šμ€ λ³€μˆ˜μ˜ ν˜ΈμΆœμ€ Typescriptμƒμ—μ„œ μ—λŸ¬λ°œμƒ
  //μ΄ˆκΈ°ν™” ν•˜μ§€ μ•Šμ€ λ³€μˆ˜ (μ‚¬μš©λΆˆκ°€)
  let str: string
  let num: number
  console.log(str) // Error! - λ³€μˆ˜κ°€ ν• λ‹Ήλ˜κΈ° 전에 μ‚¬μš©λ¨
  console.log(num) // Error! - λ³€μˆ˜κ°€ ν• λ‹Ήλ˜κΈ° 전에 μ‚¬μš©λ¨
  //μ΄ˆκΈ°ν™” 된 λ³€μˆ˜λŠ” μ‚¬μš©κ°€λŠ₯
  let str: string = ''
  let num: number = 0
  console.log(str) // OK!
  console.log(num) // OK!

πŸ’›Array

  • λ°°μ—΄μ•ˆμ— λ“€μ–΄μ˜¬ μ•„μ΄ν…œμ˜ νƒ€μž…μ„ 미리 지정

μ•„μ΄ν…œμ˜ νƒ€μž…μ΄ ν•œκ°€μ§€μΌλ•Œ

  • 방법 1 : μ•„μ΄ν…œνƒ€μž…[]
  const fruits: string[] = ['Apple', 'Banana', 'Cherry']
  const numbers: number[] = [1, 2, 3, 4, 5, 6]
  • 방법 2 : Array<μ•„μ΄ν…œνƒ€μž…>
  const fruits: Array<string> = ['Apple', 'Banana', 'Cherry']
  const numbers: Array<number> = [1, 2, 3, 4, 5, 6]

μœ λ‹ˆμ–Ένƒ€μž… ( μ—¬λŸ¬κ°€μ§€ νƒ€μž…μ˜ μ•„μ΄ν…œμ„ λ™μ‹œμ— κ°€μ§€λŠ” λ°°μ—΄ )

  • | (버티컬바) : js의 ||와 κ°™μŒ
  //방법1
  const uni: (string | number)[] = ['one', 2, 'three', 4, 'five']
  const numbers: (string | number)[] = [1, 2, 3, 4, 5]
  const month: (string | number)[] = ['jan', 'feb', 'mar', 'apr']
  
  //방법2
  const uni: Array<string | number> = ['one', 2, 'three', 4, 'five']
  const numbers: Array<string | number> = [1, 2, 3, 4, 5]
  const month: Array<string | number> = ['jan', 'feb', 'mar', 'apr']

μΈν„°νŽ˜μ΄μŠ€ / μ»€μŠ€ν…€νƒ€μž…

  • λ°°μ—΄ μ•ˆμ— 객체가 λ“€μ–΄κ°ˆ λ•Œ
  interface User {
    name: string,
    age: number,
    isValid: boolean
  }

  const userArr: User[] = [
    {
      name: 'Neo',
      age: 85,
      isValid: true,
    },
    {
      name: 'Lewis',
      age: 52,
      isValid: false,
    }
  ]

νŠΉμ •ν•œ κ°’μœΌλ‘œ νƒ€μž…μ§€μ •

  let ten: 10[]
  
  ten = [10] //Ok!
  ten = [10, 10, 10] //Ok!
  ten.push(10) //Ok!
  ten.push(11) //Error!

πŸ’›νŠœν”Œ

  • 정해진 νƒ€μž…μ˜ κ³ μ •λœ 길이 배열을 ν‘œν˜„
  //μ²«λ²ˆμ§Έμžλ¦¬μ—λŠ” string, λ‘λ²ˆμ§Έ μžλ¦¬μ—λŠ” number 인 길이 2 의 λ°°μ—΄
  let tuple: [string, number]

  tuple = ['a', 1];
  tuple = ['a', 1, 2]; //Error!
  tuple = [1, 'a']; //Error!
  • 이쀑배열
  let users: [number, string, boolean][]

  users = [[1, "NEO", true], [2, "Even", false], [2, "Lewis", true]]
  • 길이와 νƒ€μž…μ΄ μ •ν•΄μ ΈμžˆμœΌλ‚˜ 직접 ν• λ‹Ήμ—μ„œλ§Œ μœ νš¨ν•¨
  • pushλ‚˜, spliceλ“±μ˜ λ©”μ†Œλ“œλ‘œ 인해 배열이 λ³€ν•˜λŠ” κ±Έ 막을 μˆ˜λŠ” μ—†λ‹€
  let tuple: [string, number]
  tuple = ['a', 1]
  tuple = ['b', 2]
  tuple.push(3)
  console.log(tuple) // ['b', 2, 3]

πŸ’›Any

  • λͺ¨λ“  νƒ€μž…μ„ 의미
  • λΆˆκ°€ν”Όν•˜κ²Œ νƒ€μž…μ„ 단언할 수 μ—†λŠ” 경우λ₯Ό μ œμ™Έν•˜κ³  κ°€λŠ₯ν•œ 쓰지 μ•ŠλŠ”κ²ƒμ΄ μ’‹μŒ
  let any: any = 123
  any = 'Hello world'
  any = {}
  any = null

πŸ’›unknown

  • μ•Œ 수 μ—†λŠ” νƒ€μž…μ„ 의미
  • Any처럼 μ–΄λ–€ νƒ€μž…μ˜ 값도 할당될 수 μžˆμ§€λ§Œ unknown을 λ‹€λ₯Έ νƒ€μž…μ— ν• λ‹Ήν•  μˆ˜λŠ” μ—†λ‹€
let a: any = 123
let u: unknown = 123

const boo1: boolean = a // anyλ₯Ό λ‹€λ₯Έ νƒ€μž…μ— ν• λ‹Ήν•˜λŠ” 것은 κ°€λŠ₯
const any1: any = u // unknown을 any에 ν• λ‹Ήν•˜λŠ” 것은 κ°€λŠ₯
const num1: number = u // Error! unknown은 anyλ₯Ό μ œμ™Έν•œ μ–΄λ–€ν•œ νƒ€μž…μ—λ„ ν• λ‹Ήν•  수 μ—†λ‹€
const num2: number = u as number //νƒ€μž… μž¬λ‹¨μ–Έ

πŸ’›Object

  • 기본적으둜 typeof μ—°μ‚°μžκ°€ 'object'둜 λ΄”ν™˜ν•˜λŠ” λͺ¨λ“  νƒ€μž…μ„ λ‚˜νƒ€λƒ„
  • μ‚¬μš©μ„ ꢌμž₯ν•˜μ§€μ•ŠμŒ (λ„ˆλ¬΄ 포괄적)
let obj:object = {};
let arr:object = [];
let func:object = function() {};
let dat:object = new Date();
  • 더 μ •ν™•ν•œ νƒ€μž…μ§€μ •μ„ μœ„ν•΄ λ‹€μŒκ³Ό 같이 객체속성 νƒ€μž…μ„ κ°œλ³„μ§€μ •
  • κ·ΈλŸ¬λ‚˜ μ΄λ˜ν•œ 같은 ν˜•νƒœμ˜ 객체가 반볡될 λ•Œ νƒ€μž…μ„ μž¬ν™œμš© ν•  수 μ—†κΈ°λ•Œλ¬Έμ— ꢌμž₯λ˜μ§€ μ•ŠμŒ
//객체속성 νƒ€μž… κ°œλ³„ 지정
const userA: {name: string, age: number} = {
  name: "Heropy",
  age: 12
}

//같은 ν˜•νƒœμ˜ 객체가 μžˆμ„ λ•Œ νƒ€μž… μž¬ν™œμš© λΆˆκ°€λŠ₯
const userB: {name: string, age: number} = {
  name: "Neo",
  age: 35
}
  • νƒ€μž…μ˜ μž¬ν™œμš©μ„ μœ„ν•΄ interfaceλ‚˜ type을 ν™œμš©ν•˜λŠ” 것이 μ’‹μŒ
  interface User {
    name: string,
    age: number
  }

  const userA: User = {
    name: 'HEROPY',
    age: 123
  }

  const userB: User = {
    name: 'Neo',
    age: 85,
    email: 'abc@gmail.com' // Error
  }

πŸ’›Void

  • 값을 λ°˜ν™˜ν•˜μ§€ μ•ŠλŠ” ν•¨μˆ˜ (= 리턴값이 μ—†λŠ” ν•¨μˆ˜)
  • 값을 λ°˜ν™˜ν•˜μ§€ μ•ŠλŠ” ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μ€ 기본적으둜 undefinedμ΄λ‚˜ , νƒ€μž…μ„ undefined둜 지정할 μˆ˜λŠ” μ—†λ‹€
function hello():void {
  console.log('hello')
}

function bye():undefined { //Error
  console.log('bye')
}

//undefinedλ₯Ό μ§μ ‘μ μœΌλ‘œ λ°˜ν™˜ν•˜λŠ” κ²½μš°μ—λ§Œ νƒ€μž…μ„ undefined둜 지정 κ°€λŠ₯
function unde():undefined { //Ok
  return undefined
}

πŸ’›Never

  • μ ˆλŒ€λ‘œ λ°œμƒν•˜μ§€ μ•Šμ„ κ°’
  • neverνƒ€μž…μ—λŠ” μ–΄λ– ν•œ νƒ€μž…λ„ 적용 ν•  수 μ—†λ‹€
  • μ½”λ“œ μž‘μ„±μ‹œμ— 직접 μ‚¬μš© ν•  일은 μ—†μ„κ²ƒμž„... (but μ—λŸ¬λ©”μ„Έμ§€μ—μ„œ 자주 λ“±μž₯!)
  • νƒ€μž…μ„ μ§μ ‘μ„ μ–Έν•˜μ§€ μ•ŠμœΌλ©΄ neverνƒ€μž…μ΄ μžλ™ ν• λ‹Ή 됨
// 배열내에 μ–΄λ– ν•œ νƒ€μž…λ„ λͺ…μ‹œν•˜μ§€ μ•Šμ•„ neverλΌλŠ” νƒ€μž…μ΄ μžλ™ ν• λ‹Ή 됨
const arr: [] = []
arr.push(3) // Error! - 숫자 '3'은 'never' νƒ€μž…μ˜ λ§€κ°œλ³€μˆ˜μ— ν• λ‹Ήν•  수 μ—†μŠ΅λ‹ˆλ‹€.(2345)

πŸ’›μœ λ‹ˆμ–Έ Union

  • 2κ°œμ΄μƒμ˜ νƒ€μž…μ„ ν—ˆμš©
  • | (vertical bar)둜 νƒ€μž…μ„ ꡬ뢄
  • 'or' 의 의미 ( || )와 κ°™μŒ
let union: (string | number)
union = 'hello'
union = 123
union = true // Error!

πŸ’›μΈν„°μ„Ήμ…˜

  • &λ₯Ό μ‚¬μš©ν•΄ 2개 μ΄μƒμ˜ νƒ€μž…μ„ μ‘°ν•©
  • 'and'의 의미 (&&)와 κ°™μŒ
interface User {
  name: string,
  age: number
}

interface Validation {
  isValid: boolean
}

const heropy: User & Validation = {
  name: 'heropy',
  age: 24,
  isValid: true
}

πŸ’›ν•¨μˆ˜ Function

  • 방법1
    • ν™”μ‚΄ν‘œν•¨μˆ˜λ₯Ό μ΄μš©ν•΄ νƒ€μž…μ„ 지정
    • 인수의 νƒ€μž…κ³Ό λ°˜ν™˜κ°’μ˜ νƒ€μž…μ„ μž…λ ₯

// 2개의 μˆ«μžνƒ€μž… μΈμˆ˜μ™€, μˆ«μžνƒ€μž…μ˜ λ°˜ν™˜λ°μ΄ν„°
const myFunc: (arg1: number, arg2: number) => number = function (x, y) {
  return x + y 
}

// μΈμˆ˜μ™€ λ°˜ν™˜μ΄ μ—†λŠ” 경우
const yourFunc: () => void = function() {
  console.log('hi')
}
  • 방법2
    • μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν™œμš©ν•  수 μžˆλ‹€
interface MyFunc {
  (x: number, y: number): number
}

const myFunc: Myfunc = function (x, y) {
  return x + y
}
interface User {
  name: string
  age: number
  getName(m: string) : string
}

const heropy: User = {
  name: 'Heropy',
  age: 85,
  getName(message) {
    return `${message}, ${this.name}`
  }
}
profile
ν”„λ‘ νŠΈμ—”λ“œ 개발자 μ„±μž₯일기 πŸ’­

0개의 λŒ“κΈ€