typescript - deptno/deptno.github.io GitHub Wiki

typescript

enable sourcemap

node μ‹€ν–‰μ‹œμ— sourcemap 을 ν™œμ„±ν™” ν•΄μ„œ νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ½”λ“œλ‘œ 확인이 κ°€λŠ₯ν•˜λ„λ‘ν•œλ‹€

tsc --sourceMap=true
node --enable-source-maps [source.js]

build clean

vitest ν…ŒμŠ€νŠΈ 쀑에 ts 와 λΉŒλ“œλœ js κ°€ ν•¨κ»˜ μžˆλŠ” 경우 js λ₯Ό λ¨Όμ € μ½λŠ”κ²½μš°κ°€ μžˆμ–΄μ„œ build 된 파일 제거 ν›„ ν…ŒμŠ€νŠΈκ°€ ν•„μš”ν–ˆλ‹€.

tsc --build --clean

void vs undefined

void λŠ” κ³΅ν—ˆν•œ κ°’μœΌλ‘œ μ·¨κΈ‰λœλ‹€. 즉 값이 μžˆλ‹€. 무슨 κ°’μΈμ§€λŠ” λͺ¨λ₯΄κ² μœΌλ‚˜ 의미 μ—†λŠ” 무언가λ₯Ό λ¦¬ν„΄ν•˜λ©° μ΄λŠ” unknown κ³Ό λΉ„μŠ·ν•œ μ„±μ§ˆμ„ κ°€μ§„λ‹€. undefined λŠ” undefined 둜 μ·¨κΈ‰λœλ‹€

const f1 = () => undefined {
  return console.log()
}
  • undefined λŠ” undefined νƒ€μž…μ„ κ°€μ§„λ‹€
  • console.log 의 λ°˜ν™˜ 값은 undefined μ΄μ§€λ§Œ νƒ€μž…μ€ void 을 κ°€μ§€κΈ° λ•Œλ¬Έμ— νƒ€μž…μ—λŸ¬κ°€ λ°œμƒν•œλ‹€
  • unknown νƒ€μž…κ³Ό λΉ„μŠ·ν•˜μ§€λ§Œ λ‹€λ§Œ λͺ…μ‹œμ μœΌλ‘œ μ˜λ―Έκ°€ μ—†λŠ” κ°’μ˜ νƒ€μž… μ •λ„λ‘œ μ΄ν•΄ν•œλ‹€

error

compile option

/app/.pnp.cjs:10322
  return Object.defineProperties(new Error(message), {
                                 ^

Error: Qualified path resolution failed: we looked for the following paths, but none could be accessed.

Source path: /app/packages/lib/src/delay
Not found: /app/packages/lib/src/delay

    at makeError (/app/.pnp.cjs:10322:34)
    at resolveUnqualified (/app/.pnp.cjs:11847:13)
    at resolveRequest (/app/.pnp.cjs:11888:14)
    at Object.resolveRequest (/app/.pnp.cjs:11944:26)
    at resolve$1 (file:///app/.pnp.loader.mjs:1991:25)
    at nextResolve (node:internal/modules/esm/loader:163:28)
    at ESMLoader.resolve (node:internal/modules/esm/loader:838:30)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:77:40)
    at link (node:internal/modules/esm/module_job:76:36)

delay.js κ°€ μ•„λ‹Œ delay λ₯Ό λͺ»μ°Ύκ² λ‹€κ³  λ‚˜μ˜€λŠ” μ—λŸ¬ 컴파일 κ²°κ³Όκ°€ κ·ΈλŸ¬ν•œ 것인데 두가지 생각이 λ‚¬λŠ”λ° 일단 λ˜λŠ” λ°©ν–₯으둜 처리

  • module 둜 컴파일 λ˜μ—‡μœΌλ‹ˆ .mjs λ₯Ό μ°ΎλŠ” 것이 μ•„λ‹Œμ§€ ν•΄μ„œ 파일 λͺ…을 λ³€κ²½ν•΄λ³Έλ‹€.

  • import ꡬ문 μžμ²΄μ— .js ν™•μž₯자λ₯Ό λΆ™μ—¬μ„œ μž„ν¬νŠΈν•œλ‹€

  • TODO: μƒκ°ν•΄λ³΄λ‹ˆ module 컨피그가 μΌœμ§€λ©΄ directory import λ₯Όν•˜κ³  κ·Έ μ•ˆμ—μ„œ index.js μž„ν¬νŠΈν•˜λŠ” ꡬ쑰인가 싢기도 일단 ν›„μžλ‘œ ν•΄κ²°

  • module: es2022

import { a } from './module'
  • expected
import { a } from './module.js'
  • actual
import { a } from './module'
  • solution
import { a } from './module.js'
⚠️ **GitHub.com Fallback** ⚠️