Typescript: ๋ฐฉ์ถœ๋œ ์ฝ”๋“œ์—์„œ ๋ชจ๋“ˆ ๊ฒฝ๋กœ ๋งต์ด ํ™•์ธ๋˜์ง€ ์•Š์Œ

์— ๋งŒ๋“  2016๋…„ 09์›” 12์ผ  ยท  76์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: microsoft/TypeScript

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ฒ„์ „: 2.0.2

์•”ํ˜ธ

_tsconfig.json_

{
    "compilerOptions": {
        "target": "ES6",
        "module": "commonjs",
        "baseUrl": ".",
        "paths": {
            "foo/*": ["*"]
        }
    }
}

_app.ts_

import {Foo} from 'foo/utils';
console.log(Foo);

_utils.ts_

export const Foo = 'Foo';

์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘:

% ./node_modules/.bin/tsc && node app.js
Foo

์‹ค์ œ ํ–‰๋™:

% ./node_modules/.bin/tsc && node app.js
module.js:457
    throw err;
    ^

Error: Cannot find module 'foo/utils'
    at Function.Module._resolveFilename (module.js:455:15)
    at Function.Module._load (module.js:403:25)
    at Module.require (module.js:483:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/home/mfischer/src/videmo/tsc-test/app.js:2:17)
    at Module._compile (module.js:556:32)
    at Object.Module._extensions..js (module.js:565:10)
    at Module.load (module.js:473:32)
    at tryModuleLoad (module.js:432:12)
    at Function.Module._load (module.js:424:3)

_์•ฑ.js_

"use strict";
const utils_1 = require('foo/utils');
console.log(utils_1.Foo);

Typescript๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๋ชจ๋“ˆ์„ ์ฐพ๊ณ  ์žˆ์ง€๋งŒ ๋ฐฉ์ถœ๋œ ์ฝ”๋“œ์—์„œ ๋ชจ๋“ˆ ๊ฒฝ๋กœ๋Š” tsconfig.json ์˜ ๊ฒฝ๋กœ ๋ณ„์นญ์„ ์ ์šฉํ•˜๋Š” ๋Œ€์‹  ๊ทธ๋Œ€๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ๋…ธ๋“œ๋Š” ๋ชจ๋“ˆ์„ ์ฐพ์„ ์œ„์น˜๋ฅผ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. typescript๊ฐ€ ๋ชจ๋“ˆ ๊ฒฝ๋กœ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๋…ธ๋“œ๊ฐ€ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋Œ€์ฒดํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋™์ž‘์ด ์˜๋„๋œ ๊ฒฝ์šฐ ๋…ธ๋“œ์™€ ํ•จ๊ป˜ ์ƒ๋Œ€ ๊ฐ€์ ธ์˜ค๊ธฐ ์ง€์˜ฅ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฒฝ๋กœ ๋งต์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

Working as Intended

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ฐฉ์ถœ๋œ ๊ฒฝ๋กœ ์ด๋ฆ„์ด ์‹ค์ œ๋กœ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ˆ„๊ตฐ๊ฐ€ ์ด ๊ธฐ๋Šฅ์˜ ์š”์ ์ด ๋ฌด์—‡์ธ์ง€ ๋งํ•ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ฆ‰, TypeScript ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋งŒ์กฑํ•˜์ง€๋งŒ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์ด ๊ธฐ๋Šฅ์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ชจ๋“  76 ๋Œ“๊ธ€

์ƒ์„ฑ๋œ ์ถœ๋ ฅ์— browserify ๋˜๋Š” webpack๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ฒˆ๋“ค๋ง ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ? ๋˜๋Š” ์ด๊ฒƒ์ด ๋…ธ๋“œ์—์„œ ์ง์ ‘ ์‹คํ–‰๋˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜์‹ญ๋‹ˆ๊นŒ?

์ด ๋™์ž‘์ด ์˜๋„๋œ ๊ฒฝ์šฐ ๋…ธ๋“œ์™€ ํ•จ๊ป˜ ์ƒ๋Œ€ ๊ฐ€์ ธ์˜ค๊ธฐ ์ง€์˜ฅ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฒฝ๋กœ ๋งต์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ธ€์Ž„์š” ๊ทธ๋ฆฌ๊ณ  ์ปจํ…์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด "paths" ๋Š” Node.js require() ์™€ ๋‹ฌ๋ฆฌ ์žฌ๋งคํ•‘์„ ํ—ˆ์šฉํ•˜๋Š” ๋กœ๋”์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜๋„๋œ ๋™์ž‘์€ TypeScript๊ฐ€ ๋ชจ๋“ˆ ID๋ฅผ ๋‹ค์‹œ ์“ฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‹ค์–‘ํ•œ ๋กœ๋”์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ชจ๋“ˆ ID์— ๋Œ€ํ•œ ์œ ํ˜• ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์ด ์ƒ๊ฐํ•œ ๋Œ€๋กœ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์—๋Š” ๋กœ๋”์˜ ํ•ด๊ฒฐ ์ „๋žต์„ ๋ฏธ๋Ÿฌ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ๋งŒ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@mhegazy ๋…ธ๋“œ์™€ ์ง์ ‘ ์ž‘๋™ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์˜๋„ํ•œ ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ณ  typescript๊ฐ€ ๋ชจ๋“ˆ ๊ฒฝ๋กœ๋ฅผ ๋‹ค์‹œ ์“ฐ์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๋Š” @kitsonk ์˜ ๋ง์ด ๋งž์Šต๋‹ˆ๊นŒ?

๋„ค, ์ด๊ฒƒ์€ ์˜๋„์˜€์Šต๋‹ˆ๋‹ค - ๋ชจ๋“ˆ(์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๋Œ€๋กœ)์ด ๋Ÿฐํƒ€์ž„์—์„œ ํ•ด๊ฒฐ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ์ฐพ์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ ๋Ÿฐํƒ€์ž„๊ณผ ๋””์ž์ธ ์‹œ๊ฐ„ ๊ฒฝํ—˜ ๊ฐ„์˜ ๋ถˆ์ผ์น˜๋ฅผ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์‹œ์ ์—์„œ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ํ•ญ์ƒ ์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณตํ•œ ๋ชจ๋“ˆ ID๊ฐ€ ์ •ํ™•ํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ๋ณ€๊ฒฝ์„ ์‹œ๋„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์œ ์‚ฌํ•œ ์‘๋‹ต https://github.com/Microsoft/TypeScript/issues/9910#issuecomment -234729007

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํ˜ผ๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ด๊ฒƒ์„ ๋” ์ž˜ ๋ฌธ์„œํ™”ํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ https://www.npmjs.com/package/module-alias ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋…ธ๋“œ์—์„œ ์ž‘๋™ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

TS์˜ ์ž…์žฅ์— ๊ฐ์‚ฌ๋“œ๋ฆฌ๋ฉฐ, ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์†Œ๋ž€ ์—†์ด baseUrl ์ƒ๋Œ€ require() ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๋Š” ํŽธ๋ฆฌํ•จ์„ ์›ํ•˜๋Š” ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•œ 90% ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

์ด ์†”๋ฃจ์…˜์€ ๋…ธ๋“œ์˜ require() ํ˜ธ์ถœ์„ ์—ฐ๊ฒฐํ•˜๊ณ  baseUrl ๋ฅผ ๋ชจ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด "main" ์˜ dirname์„ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ์„ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ baseUrl ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜๋„ ์†Œ์Šค "main.ts"๊ฐ€ ์žˆ๋Š” ๋™์ผํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์„ค์ •๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ด ์ž‘์€ ์ฝ”๋“œ ๋ฉ์–ด๋ฆฌ๋ฅผ "main.ts" ์ƒ๋‹จ์— ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค.

import * as path from 'path'
import * as fs from 'fs'
(function() {
  const CH_PERIOD = 46
  const baseUrl = path.dirname(process['mainModule'].filename)
  const existsCache = {d:0}; delete existsCache.d
  const moduleProto = Object.getPrototypeOf(module)
  const origRequire = moduleProto.require
  moduleProto.require = function(request) {
    let existsPath = existsCache[request]
    if(existsPath === undefined) {
      existsPath = ''
      if(!path.isAbsolute(request) && request.charCodeAt(0) !== CH_PERIOD) {
        const ext = path.extname(request)
        const basedRequest = path.join(baseUrl, ext ? request : request + '.js')
        if(fs.existsSync(basedRequest)) existsPath = basedRequest
        else {
          const basedIndexRequest = path.join(baseUrl, request, 'index.js')
          existsPath = fs.existsSync(basedIndexRequest) ? basedIndexRequest : ''
        }
      }
      existsCache[request] = existsPath
    }
    return origRequire.call(this, existsPath || request)
  }
})()

mika-fischer๊ฐ€ ์–ธ๊ธ‰ํ•œ module-alias ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ํŒจํ‚ค์ง€์— ๋“ฑ๋กํ•˜๋Š” ๊ฒฝ๋กœ๋Š” / ๋กœ ๋๋‚˜์ง€ ์•Š์•„์•ผ ํ•˜๋ฉฐ ๊ฒฝ๋กœ๋Š” ๊ฒฝ๋กœ์— ์ƒ๋Œ€์ ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ package.json ๋Š” (๋ช…๋ฐฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค),

๋”ฐ๋ผ์„œ tsconfig ํŒŒ์ผ์— ๋‹ค์Œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ:

"outDir": "./dist",
"baseUrl": ".",
"paths": {
  "foo/*": ["./src"]
}

package.json ์— ์ด๊ฒƒ์„ ๋“ฑ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

"_moduleAliases": {
  "foo": "dist"
}

๊ธ€์Ž„์š” ๊ทธ๋ฆฌ๊ณ  ์ปจํ…์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด "๊ฒฝ๋กœ"๋Š” Node.js require()์™€ ๋‹ฌ๋ฆฌ ์žฌ๋งคํ•‘์„ ํ—ˆ์šฉํ•˜๋Š” ๋กœ๋”์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜๋„๋œ ๋™์ž‘์€ TypeScript๊ฐ€ ๋ชจ๋“ˆ ID๋ฅผ ๋‹ค์‹œ ์“ฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‹ค์–‘ํ•œ ๋กœ๋”์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ชจ๋“ˆ ID์— ๋Œ€ํ•œ ์œ ํ˜• ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์ด ์ƒ๊ฐํ•œ ๋Œ€๋กœ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์—๋Š” ๋กœ๋”์˜ ํ•ด๊ฒฐ ์ „๋žต์„ ๋ฏธ๋Ÿฌ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ๋งŒ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํฐ ํ”„๋กœ์ ํŠธ์—์„œ ์„ค์ •ํ•˜๋ ค๊ณ  ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•œ ํ›„ ์—ฌ๊ธฐ์— ์™”์Šต๋‹ˆ๋‹ค.
์ด ๋™์ž‘์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜๊ธฐ ์ „์— ๋ฌธ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ณต์‹ ๋ฌธ์„œ https://www.typescriptlang.org/docs/handbook/module-resolution.html#path -mapping%20docs ์—๋Š” "์žฌ๋งคํ•‘์„ ํ—ˆ์šฉํ•˜๋Š” ๋กœ๋”"๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋‚ด์šฉ์ด ์—†์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ํด๋”์— "tspath"๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค... https://www.npmjs.com/package/tspath

๋˜ํ•œ "momothepug/tsmodule-alias"๋ฅผ ์‹œ๋„ํ•˜์—ฌ ๊ฒฝ๋กœ ํ™•์ธ์˜ ๋ณ„์นญ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://www.npmjs.com/package/@momothepug/tsmodule -alias

https://www.npmjs.com/package/module-alias ๋งŒ ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค ...

๋‚˜๋„ tsconfig.json๊ณผ package.json ๋‚ด์—์„œ ๋‚ด ๋ณ„์นญ์„ ์ถ”์ ํ•ด์•ผ ํ•˜๋Š” ๋‹จ์ ์ด ์žˆ์ง€๋งŒ ๋ชจ๋“ˆ ๋ณ„์นญ์œผ๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋“ ์ง€ ๋” ๊ฐ„๋‹จํ•œ ์†”๋ฃจ์…˜์„ ์ฐพ์•˜์Šต๋‹ˆ๊นŒ?

@mattyclarkson ์ด ์ง€์ ํ•œ ์†”๋ฃจ์…˜๋„ ์ž‘๋™ํ•˜์ง€๋งŒ ts-node์™€ ๋‚˜๋ž€ํžˆ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์•„์ด๋””์–ด?

https://github.com/momoThePug/tsmodule-alias ๋ฅผ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค.

2018-05-31 15:04 GMT-05:00 edufschmidt [email protected] :

๋‚˜๋„ ๋ชจ๋“ˆ ๋ณ„์นญ์œผ๋กœ ์ด๊ฒƒ์„ ์ž‘๋™ํ•˜๋„๋ก ๊ด€๋ฆฌํ–ˆ์ง€๋งŒ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
tsconfig.json ๋‚ด์—์„œ ๋‚ด ๋ณ„์นญ์„ ์ถ”์ ํ•ด์•ผ ํ•˜๊ณ 
ํŒจํ‚ค์ง€.json. ๋ˆ„๊ตฌ๋“ ์ง€ ๋” ๊ฐ„๋‹จํ•œ ์†”๋ฃจ์…˜์„ ์ฐพ์•˜์Šต๋‹ˆ๊นŒ?

@mattyclarkson์ด ์ง€์ ํ•œ ์†”๋ฃจ์…˜
https://github.com/mattyclarkson ๋„ ์ž‘๋™ํ•˜์ง€๋งŒ ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค
ts-node์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์•„์ด๋””์–ด?

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/Microsoft/TypeScript/issues/10866#issuecomment-393662306 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/ACKT9JWIkb0Wekz0H_Z3zKXvoE-49EIBks5t4EzkgaJpZM4J6vZQ
.

@DanyelMorales ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ •๋ง ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ฒœ๋งŒ์—์š”! :)

2018-05-31 16:35 GMT-05:00 edufschmidt [email protected] :

๊ฐ์‚ฌ ํ•ฉ๋‹ˆ๋‹ค @DanyelMorales https://github.com/DanyelMorales , ์ด๊ฒƒ์€ ์ •๋ง
๋Šฅ์ˆ™ํ•œ.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/Microsoft/TypeScript/issues/10866#issuecomment-393688075 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/ACKT9GNo30wNv4ZWzSwm_Lv4vesLPI3xks5t4GIzgaJpZM4J6vZQ
.

๋ฐฉ์ถœ๋œ ๊ฒฝ๋กœ ์ด๋ฆ„์ด ์‹ค์ œ๋กœ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ˆ„๊ตฐ๊ฐ€ ์ด ๊ธฐ๋Šฅ์˜ ์š”์ ์ด ๋ฌด์—‡์ธ์ง€ ๋งํ•ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ฆ‰, TypeScript ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋งŒ์กฑํ•˜์ง€๋งŒ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์ด ๊ธฐ๋Šฅ์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ชจ๋“ˆ์ด ์•„๋‹Œ ๊ฒƒ, ์ฆ‰ ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์•„๋‹Œ ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๋Œ€ ๊ฒฝ๋กœ ๋งคํ•‘์„ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ํ–ˆ๋˜ ์†Œ์Šค ํŒŒ์ผ๊ณผ ๊ด€๋ จ๋œ ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ฝ๋Š” ๋…ธ๋“œ ์Šคํฌ๋ฆฝํŠธ์—์„œ:

const starterDir = path.resolve(__dirname, './templates/starter')

typescript๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ(๊ตฌ์„ฑ ๊ธฐ๋ฐ˜)์— ์“ฐ๊ธฐ ๋•Œ๋ฌธ์— __dirname์€ ๋” ์ด์ƒ ์œ„์˜ ๊ฒฝ๋กœ๋ฅผ ํ•ด์„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ชจ๋“ˆ์ด ์•„๋‹Œ ๊ฒƒ, ์ฆ‰ ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์•„๋‹Œ ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๋Œ€ ๊ฒฝ๋กœ ๋งคํ•‘์„ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๊ทธ๊ฒƒ์€ ์‹ค์ œ๋กœ "Node.js ๋ฐ TypeScript ์งˆ๋ฌธ์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ?"์ด๋ฉฐ Gitter.im ๋˜๋Š” StackOverflow์—์„œ ํ›จ์”ฌ ๋” ์ž˜ ๋ฌป์Šต๋‹ˆ๋‹ค.

TypeScript๋ฅผ ์ข‹์•„ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ๋ฏธ์นœ ์ง“์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ๋‹ค. TS ์ฝ”๋“œ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ๊ฑฐ์˜ ์•Œ์ง€ ๋ชปํ•˜๋”๋ผ๋„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ํด๋ผ์ด์–ธํŠธ ๋ฐ ์„œ๋ฒ„์™€ ๊ณต์œ  ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค... TS๊ฐ€ ์ฒ˜์Œ์— ๊ฒฝ๋กœ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ ๋‹ค์Œ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น˜๊ฒŒ ๋งŒ๋“œ๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? TS์—์„œ ๋‚ด๊ฐ€ ๋งŒ๋“œ๋Š” ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์— ๋ฒˆ๋“ค๋Ÿฌ/๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? 90% ๊ตฌํ˜„๋œ TS ๊ธฐ๋Šฅ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ๋„๊ตฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ  TS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์ƒ๊ฐ์— TS๋Š” ์›นํŒฉ ๋•Œ๋ฌธ์— ํ”„๋ก ํŠธ์—”๋“œ์šฉ์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด๋ฏธ ts ๋ณ„์นญ ๊ฒฝ๋กœ๋ฅผ ์ž˜ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ Requirejs๋„
๋˜‘๊ฐ™์€ ๊ฒƒ. ๊ทธ๋Ÿฌ๋‚˜ Nodejs ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ ๋„ˆ๋ฌด ์–ด๋ ต์Šต๋‹ˆ๋‹ค. :(

์—˜ jue., 9์›” 20์ผ 2018๋…„ 02์‹œ 50๋ถ„, Josh Pike [email protected]
๊ธฐ๋ก:

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ๋‹ค. TS ์ฝ”๋“œ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ๊ฑฐ์˜ ์•Œ์ง€ ๋ชปํ•˜๋”๋ผ๋„ ์ด๊ฒƒ์€
๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ณต์œ  ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.
ํด๋ผ์ด์–ธํŠธ ๋ฐ ์„œ๋ฒ„์™€ ํ•จ๊ป˜ ... TS๊ฐ€ ๊ฒฝ๋กœ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์ด์œ 
์ฒซ ๋ฒˆ์งธ ์žฅ์†Œ, ๊ทธ๋ ‡๋‹ค๋ฉด ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋†๊ตฌ๋ฅผ ๋›ฐ์–ด ๋„˜๊ฒŒํ•ฉ๋‹ˆ๊นŒ? ์™œ
TS๋Š” ๋‚ด๊ฐ€ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์— ๋ฒˆ๋“ค๋Ÿฌ/๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๊นŒ?
๋งŒ๋“ค๋‹ค? TS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋” ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
90% ๊ตฌํ˜„๋œ TS ๊ธฐ๋Šฅ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/Microsoft/TypeScript/issues/10866#issuecomment-423077950 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/ACKT9DD_z4KOHpfwddTomMXujEsza9tQks5uc0jbgaJpZM4J6vZQ
.

+1!

webpack์€ ๊ฒฝ๋กœ ๋งต(๋˜๋Š” babel-plugin-module-resolver ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๋„๊ตฌ)์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์„ ์–ธ( .d.ts )์€ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์„ ์–ธ์˜ ๋ชจ๋“  ๊ฒฝ๋กœ๊ฐ€ ํ™•์ธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์—๋„ ๋ถ€๋”ช์ณค์Šต๋‹ˆ๋‹ค. ๋‚ด๋ณด๋‚ธ ์ฝ”๋“œ์— ๊ฒฝ๋กœ ๋งคํ•‘์ด ํฌํ•จ๋œ๋‹ค๋Š” ๊ฒƒ์ด ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. module-alias ์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Typescript๊ฐ€ ์ด ๊ธฐ๋Šฅ์„ ์„ ํƒ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋ ค๋ฉด +1์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜์œผ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ? ๋ถ„๋ช…ํžˆ ์ธ๊ธฐ ์žˆ๋Š” ์š”์ฒญ์ž…๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์ž‘๋™์— ๋Œ€ํ•ด ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฅด๊ณ  ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๊ฐ„๋‹จํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? TypeScript ์ปดํŒŒ์ผ๋Ÿฌ๋กœ ์ง์ ‘ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ๊ฐ€์žฅ ์ ์ ˆํ•œ ๊ณณ์—์„œ ์šฐ๋ฆฌ๋ฅผ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๋„๋ก ๊ฐ•์š”ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

+1

ts-transformer-imports ๋ฐ ttypescript ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ˆ๋Œ€ ๋ฐ ๊ฒฝ๋กœ ๊ธฐ๋ฐ˜ TypeScript ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์ƒ๋Œ€ Javascript ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

tsc ๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ปดํŒŒ์ผ ํƒ€์ž„ ์†”๋ฃจ์…˜์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. https://github.com/joonhocho/tscpaths

Microsoft/TypeScript#15479(์ฃผ์„)

import {foo} from "@/some/folder/foo" ๊ฐ€ ๋งŽ๊ณ  ์ถœ๋ ฅ๋œ d.ts ํŒŒ์ผ์ด ๋ณ„์นญ์„ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜๋Š” d.ts ํŒŒ์ผ์„ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด vue-cli๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ํ•  ๋•Œ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ๊ฒ€์ƒ‰ ๋ฐ ์ด ์Šค๋ ˆ๋“œ ๋ฐ ๊ธฐํƒ€ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ๋ฌด๋ฆŽ ๊ฒฝ๋ จ ๋ฐ˜์‘์ด "TS๊ฐ€ ํ•ด๊ฒฐํ•  ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค"์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์‚ฌ์šฉ์ž ์ง€์ • ๊ฒฝ๋กœ ๋ณ„์นญ(์™„์ „ํžˆ ์œ ํšจํ•˜๊ณ  ๋ณต์žกํ•œ ํ”„๋กœ์ ํŠธ์— ๊ถŒ์žฅ๋˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹) d.ts ํŒŒ์ผ ์ƒ์„ฑ(์‚ฌ์šฉ์ž ์ง€์ • ํƒ€์‚ฌ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ์—†์ด)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ typescript ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์„ ์–ธ ํŒŒ์ผ ํ”„๋กœ์„ธ์Šค์—์„œ๋„ ์ด๋Ÿฌํ•œ ๋ณ„์นญ์„ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ปดํŒŒ์ผ๋Ÿฌ ์ž‘์—…์€ typescript ํŒŒ์ผ์— ๋Œ€ํ•ด ์œ ํšจํ•œ javascript ๋ฐ d.ts ํŒŒ์ผ์„ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ, ์ด ์œ ํšจํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” ๋‹จ์ˆœํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(tsconfig ํŒŒ์ผ์—์„œ ๊ฒฝ๋กœ ๋ณ„์นญ ์‚ฌ์šฉ).

๋‚˜๋Š” ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์•ฝ๊ฐ„ ํ˜ผ๋ž€์Šค๋Ÿฝ๋‹ค. ํ์‡„๋˜์—ˆ์œผ๋ฉฐ '์˜๋„ํ•œ ๋Œ€๋กœ ์ž‘์—… ์ค‘'์ด๋ผ๋Š” ๋ ˆ์ด๋ธ”์ด ์ง€์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Typescript๊ฐ€ ์ž˜๋ชป๋œ ์†Œ์Šค๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž„์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์ด์ƒํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

๊ฑฐ์ง€๋Š” ์„ ํƒ์ž๊ฐ€ ๋  ์ˆ˜ ์—†์ง€๋งŒ Typescript๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ”๋‹๋ผ JS์˜ ๋งŽ์€ ์‹ค๋ง์Šค๋Ÿฌ์šด ์ธก๋ฉด์„ ํ”ผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ƒ๋Œ€ ๊ฐ€์ ธ์˜ค๊ธฐ('../../../../../utils/parser')๋ฅผ ๊ทธ ์ค‘ ํ•˜๋‚˜๋กœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. Typescript๊ฐ€ ์ด๊ฒƒ๋“ค์„ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ •๋ง ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค!

@codeitcody ๊ทธ๋Ÿฐ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํƒ€์‚ฌ ํŒจํ‚ค์ง€ ์—†์ด๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์ถœ๋ ฅํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์–ด๋ฆฌ์„์€ ์ผ์ด์ง€๋งŒ ๊ทธ๊ฒƒ์ด ํ˜„์‹ค์ž…๋‹ˆ๋‹ค.

๊ธ€์Ž„์š”, ์ด๊ฒƒ์€ ์ข‹์€ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๊นŒ?

๋ณธ์งˆ์ ์œผ๋กœ ํ›„ํ”„๋ฅผ ๊ฑด๋„ˆ ๋›ฐ์ง€ ์•Š๊ณ  ์•ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“œ๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ–๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋น„์ƒ์‚ฐ์ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค(์ฆ‰, ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ์ข…์†์„ฑ์„ ์„ค์น˜).

์ด ๋ฌธ์ œ๋Š” 2๋…„ ๋™์•ˆ ์ฃผ๋ณ€์— ์žˆ์—ˆ๊ณ  ๊ตฌํ˜„ ์—ฌ๋ถ€์— ๋Œ€ํ•œ ๊ณต์‹์ ์ธ ์–ธ๊ธ‰์ด ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด Node.js ํ”„๋กœ์ ํŠธ์—์„œ TypeScript์˜ ๊ฐ€์žฅ ์ข‹์€ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์ž„์„ ๊ณ ๋ คํ•  ๋•Œ, ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ทจ๊ธ‰๋˜๊ณ  ์žˆ๋Š”์ง€ ์ •๋ง ๋”์ฐํ•ฉ๋‹ˆ๋‹ค.

@mhegazy ์ง€๊ธˆ 2๋…„ ํ›„์— TypeScript ํŒ€์ด ์ด๊ฒƒ์„ ๋‹ค์‹œ ์‚ดํŽด๋ณด๊ณ  ์žฌ๊ณ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

webpack์€ ๊ฒฝ๋กœ ๋งต(๋˜๋Š” babel-plugin-module-resolver ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๋„๊ตฌ)์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์„ ์–ธ( .d.ts )์€ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์„ ์–ธ์˜ ๋ชจ๋“  ๊ฒฝ๋กœ๊ฐ€ ํ™•์ธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์‚ฌ์šฉ์ž ์ง€์ • ๋ฐ˜์‘ ๊ตฌ์„ฑ ์š”์†Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๊ณ  ๋ณ„์นญ์— paths ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋กค์—…์œผ๋กœ 2๊ฐœ์˜ ๋ฒˆ๋“ค์„ ์ˆ˜ํ–‰ํ•˜๊ณ  --emitDeclarationOnly ๋กœ ์œ ํ˜•์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ๋˜๊ธฐ ๋•Œ๋ฌธ์— module-alias ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ฒฝ๊ณ : ์ด ๋ชจ๋“ˆ์€ ๊ธฐ๋ณธ ์š”๊ตฌ ๋™์ž‘์„ ์ˆ˜์ •ํ•˜๋ฏ€๋กœ ๋‹ค๋ฅธ npm ๋ชจ๋“ˆ์—์„œ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค!

Reddit: https://www.reddit.com/r/typescript/comments/a07jlr/path_maps_cannot_be_resolved_by_tsc_works_as/ ์—์„œ ์ด ๊ฒŒ์‹œ๋ฌผ์„ ์ฐฌ์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ์„ธ์š”.
์—ฌ๊ธฐ์—์„œ ์ด ์—„์ฒญ๋‚œ ํ† ๋ก ์ด ํ•„์š”ํ•œ ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๋ฒ„๊ทธ๋ฅผ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. tsconfig์˜ ์˜ต์…˜๊ณผ ๋ชจ๋“  ์‚ฌ๋žŒ์€ ๊ทธ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์ด ํ˜„์žฌ ๋™์ž‘(์–ด๋–ค ์ด์œ ๋กœ๋“ )์ธ์ง€ ์•„๋‹ˆ๋ฉด ์ž‘๋™ ๋ฐฉ์‹์ธ์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Dropbox์—์„œ๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ  ์ด ๋ณ€ํ™˜๊ธฐ๋ฅผ ์˜คํ”ˆ ์†Œ์Šค๋กœ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. https://github.com/dropbox/ts-transform-import-path-rewrite

์ง€๊ธˆ์€ ๊ฐ™์€ ๊ฒฝํ—˜์„ ์—ฌ๋Ÿฌ ๋ฒˆ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฝ๋กœ ๋ณ„์นญ์ด ํ•ด๊ฒฐ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜์ง€๋งŒ module-alias๋ฅผ ์„ค์น˜ํ•˜๊ณ  package.json์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๊ธฐ๋ณธ ํŒŒ์ผ๋กœ ๊ฐ€์ ธ์™€์•ผ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ณ„์† ์žŠ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Typescript์— ์˜ํ•ด ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ์ฒ˜๋ฆฌ๋œ๋‹ค๋ฉด ๊ต‰์žฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„์•ผ. ์ด๊ฒƒ์€ TypeScript์— ๋Œ€ํ•œ ์ง„์ •ํ•œ ํƒ€๊ฒฉ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์— ์˜๋ฏธ๊ฐ€ ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ?

ps +1 ๋Œ“๊ธ€๋งŒ ๋‹ฌ๋ฉด ์•ˆ๋˜๋‚˜์š”?

ํด๋Ÿฝ @def14nt์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” TypeScript๊ฐ€ ์šฐ๋ฆฌ์˜ ์‚ถ์„ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๊ฐ„๋‹จํ•˜๊ณ  ํ•ฉ๋ฆฌ์ ์ธ ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜์„ ๊ตฌํ˜„ํ•  ๋‚ ์„ ์ฐธ์„์„ฑ ์žˆ๊ฒŒ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ๋” ๋‚˜์€ ๋ฏธ๋ž˜๋ฅผ ๋ฐ”๋ผ๋ณด๋ฉฐ ๋ณ„์ด ๋น›๋‚˜๋Š” ๋ˆˆ์„ ๊ฐ€์ง„ ํ–‰๋ณตํ•œ ๋ชฝ์ƒ๊ฐ€ ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค. ๋งˆ์นจ๋‚ด ๊ทธ ๋‚ ์ด ์˜ค๋ฉด ์ƒˆ๋กœ ์ฐพ์€ ๋‚ ๊ฐœ๋ฅผ ํƒ€๊ณ  ์žฅ์—„ํ•˜๊ฒŒ ์„์–‘ ์†์œผ๋กœ ๋‚ ์•„๊ฐ€๋Š” ๋ผ์ง€์˜ ๋ฝ€์–€ ๋ถ„ํ™์ƒ‰ ๋ชธ์„ ํ•˜๋Š˜์—์„œ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

Lol, TypeScript ํŒ€์ด ์ง€์›์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด npm ํ™•์žฅ์„ ์„ค์น˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ทธ๋“ค์€ ์ ์  ๋” ๋งŽ์€ ๊ฐœ์„  ์‚ฌํ•ญ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์ค‘๋‹จํ•˜๊ณ  ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@mika-fischer
https://www.npmjs.com/package/module-alias ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ eslint๊ฐ€ 'ํ™•์ธ๋˜์ง€ ์•Š์€ ๊ฒฝ๋กœ '@root/bla/bla'(JS ํŒŒ์ผ์—์„œ)์— ๋Œ€ํ•ด ๊ฒฝ๊ณ ํ•˜๋„๋ก ์ค‘์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? WebStorm ๋ฐ VS Code์—์„œ ์ด๋Ÿฌํ•œ ๊ฒฝ๋กœ์— ๋Œ€ํ•ด ์ž๋™ ์™„์„ฑ์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ €์—๊ฒŒ ์ž๋™ ์™„์„ฑ ๊ฐ€์ ธ์˜ค๊ธฐ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ typescript ํ”„๋กœ์ ํŠธ์˜ VSCode์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@bobmoff ์˜ˆ, TS ํŒŒ์ผ์—์„œ TS ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ๋ชจ๋“  ๊ฒƒ์ด ์ข‹์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ TS ํŒŒ์ผ์—์„œ `require('@root/bla/bla')์— ๋Œ€ํ•œ ์ž๋™ ์™„์„ฑ ๋ฐ ํƒ์ƒ‰์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚ด JS ํ”„๋กœ์ ํŠธ๋ฅผ TS๋กœ ๋ฒˆ์—ญํ•˜๊ณ  ์‹ถ๊ณ  js ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ts๋กœ ํ•˜๋‚˜์”ฉ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด์ œ ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋„ˆ๋ฌด ์–ด๋ ต๊ณ  ts๋‚˜ IDE์—์„œ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  js ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ํ•œ ๋ฒˆ์— ts๋กœ ๋ฐ”๊ฟ”์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜๋‚˜์˜ JS ํŒŒ์ผ ์ด๋ฆ„์„ TS๋กœ ๋ฐ”๊พธ๋ฉด build ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ชจ๋“  ์ƒ๋Œ€ ๊ฒฝ๋กœ๊ฐ€ ์†์ƒ๋˜๊ธฐ ๋•Œ๋ฌธ์—(์•„๋งˆ๋„ "allowJs: true"๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜์ง€๋งŒ 2GB์˜ JS ํŒŒ์ผ์ด ์žˆ๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ปดํŒŒ์ผํ•˜๋Š” ๊ฒƒ์ด ์ด์ƒํ•ฉ๋‹ˆ๋‹ค %)).
์ข‹์•„, ๋ชจ๋“ˆ ๋ณ„์นญ์œผ๋กœ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•˜๊ณ  ๋‚ด IDE์˜ ํƒ์ƒ‰ ๋ฐ ์ž๋™ ์™„์„ฑ์ด ์ž‘๋™์„ ๋ฉˆ์ถ”๊ณ  eslint๋Š” 100500 'ํ™•์ธ๋˜์ง€ ์•Š์€ ๊ฒฝ๋กœ'์— ๋Œ€ํ•ด ๊ฒฝ๊ณ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๋ฏธ TS๋ฅผ ์•ฝ๊ฐ„ ์‹ซ์–ดํ•ฉ๋‹ˆ๋‹ค. TS ๋งˆ์ผ€ํŒ… ์‚ฌ๋žŒ๋“ค์ด ๋งํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํฐ JS ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ์‰ฝ์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. JS ๋ฐฑ์—”๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ golang์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒƒ์ด ๋” ๊ฐ„๋‹จํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. :)

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ tscpaths ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋„. ๋‚˜๋Š” ์ •๋ง๋กœ tscpaths ๋ฅผ ์ถ”์ฒœํ•œ๋‹ค. ๊ทธ๊ฒƒ์€ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

node -r ts-node/register/transpile-only -r tsconfig-paths/register index.js

๋˜๋Š” pm2 process.yml์„ ์‚ฌ์šฉํ•˜์—ฌ

apps:
  - name: 'my-app'
    script: './dist/index.js'
    instances: 'max'
    exec_mode: 'cluster'
    out_file : '/dev/null'
    error_file : '/dev/null'
    node_args: ['--require=ts-node/register/transpile-only', '--require=tsconfig-paths/register']
    env_production:
      NODE_ENV: production

์ด๊ฒƒ์„ ์šฐ์—ฐํžˆ ๋ฐœ๊ฒฌํ–ˆ๋Š”๋ฐ ๋•Œ๋กœ๋Š” TypeScript๊ฐ€ ์ •๋ง ๊ณจ์น˜ ์•„ํ”ˆ ์ผ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์™œ ์ด ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณ„์†ํ•ด์„œ ๊ณ„์†๋˜๊ณ  ์žˆ๋Š”์ง€ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ๋ชจ๋‘ "๊ฒฝ๋กœ ์ง€์˜ฅ"์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ (๋ณ„์นญ์„ ์‚ฌ์šฉํ•˜์—ฌ)
์ •๋ง ๊นจ๋—ํ•˜๋‹ค
๊ทธ ํ˜ผ๋ž€๊นŒ์ง€, ์ด ์Šค๋ ˆ๋“œ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ์ด๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค!

๋ณ„์นญ์€ TypeScript ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ํ•ด์„๋˜๋ฉฐ ์ •ํ™•ํžˆ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋ž˜์•ผ ํ•˜๋“ฏ์ด,
๊ฒฐ๊ณผ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ์—์„œ ์ฃผ๋ณ€์„ ์ฐŒ๋ฅด์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค.
๋‹น์‹ ์€ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์–ด
๋ณ„์นญ์€ ์Šค์Šค๋กœ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค!

....๋˜๋Š” Apple, Google ๋ฐ Microsoft์—์„œ ์Šค๋ ˆ๋“œ ์‹œ์ž‘
JavaScript ์—”์ง„์—์„œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋„๋ก ์š”์ฒญํ•˜์—ฌ
๊ทธ๋“ค์€ ํ•  ์ˆ˜์žˆ๋‹ค
๋‹น์‹ ์˜ ๋ณ„์นญ์„ interpet ;-)

TypeScript ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ •ํ™•ํžˆ ํ•ด์•ผ ํ•  ์ผ์„ ํ•ฉ๋‹ˆ๋‹ค!

Angular ์„ธ๊ณ„์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ ๋„๋กœ๊ฐ€ ํฌ์žฅ๋˜์–ด ์žˆ๊ณ  ์›ํ•˜๋Š” ๊ฒฝ์šฐ
๋‹น์‹ ์˜
Node์—์„œ ์ง์ ‘ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด ๊ฒฝ๋กœ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
๋งŒ๋“ค์–ด์ง„
๋‹น์‹ ์„ ์œ„ํ•œ ๊ทธ๋Ÿฐ ๋„๊ตฌ๋Š” ์ง€๊ธˆ 1๋…„ ๋„˜๊ฒŒ ์ƒ์‚ฐ์— ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด๋‹ค
์—ฌ๊ธฐ ์Šค์›จ๋ด์—์„œ ๊ฐ€์žฅ ํฐ ์‹ ๋ฌธ์—์„œ ์‚ฌ์šฉํ•˜๋Š”, ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋‹น์‹ ์ด ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค
๋งจ๋ฐœ๋กœ ๊ฐ€๋‹ค
Node์™€ ํ•จ๊ป˜ ๋ผˆ, ๋‚˜๋Š” ์—ฌ๊ธฐ์—์„œ ์•„๋ฌด๊ฒƒ๋„ ํŒ”๋ ค๊ณ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค, ๋‚˜๋Š” ๋ˆ์„ ๋ฒŒ์ง€ ์•Š์Šต๋‹ˆ๋‹ค
์ด๊ฒƒ์œผ๋กœ๋ถ€ํ„ฐ :)

์˜ˆ, "tsmodule-alias" ๋ฐ ์œ ์‚ฌํ•œ ํ•ดํ‚น ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์‹ค์ œ๋กœ ์ž‘๋™์‹œํ‚ค๋‹ค
๋งค์šฐ ์กฐ์‹ฌํ•˜์ง€๋งŒ ์—‰๋ง์ธ ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.
ts ๋…ธ๋“œ,
์‰˜ ์Šคํฌ๋ฆฝํŠธ ๋“ฑ...์•ผ๋‹ค์•ผ๋‹ค

๋“œ๋””์–ด ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ๋Š๊ปด์„œ ์Šค์Šค๋กœ๋ฅผ ๊ฐ€๋‘๊ณ  ๋งŒ๋“ค์—ˆ์–ด์š”.
TsPath
์ปดํŒŒ์ผ ์‹œ๊ฐ„ ๋ณ„์นญ

> npm ์„ค์น˜ -g tspatj

myproject> tsc

myproject> tspath

๋˜๋Š”

myproject> tspath --f

ํ—ค๋“œ๋ฆฌ์Šค(๋นŒ๋“œ ์„œ๋ฒ„์—์„œ ๋งค์šฐ ์œ ์šฉํ•จ)

๊ทธ๋Ÿฐ ๋‹ค์Œ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ JavaScript ํŒŒ์ผ์—
์˜ฌ๋ฐ”๋ฅธ ์ƒ๋Œ€ ๊ฒฝ๋กœ, ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์—ฌ๊ธฐ์„œ ์›ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๊นŒ?

๊ฑด๋ฐฐ! :)

https://www.npmjs.com/package/tspath

๋ด ์† 1์›” 13์ผ 2019 kl 22:20 skrev Fabio Spampinato <
์•Œ๋ฆผ@github.com>:

์ด๊ฒƒ์„ ์šฐ์—ฐํžˆ ๋ฐœ๊ฒฌํ–ˆ๋Š”๋ฐ ๋•Œ๋กœ๋Š” TypeScript๊ฐ€
๋‚˜๊ท€.

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/Microsoft/TypeScript/issues/10866#issuecomment-453866553 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAAy_7JYrwYo3KOLxpLWP0np5JVz2kQzks5vC6MogaJpZM4J6vZQ
.

@duffman

๋ณ„์นญ์€ TypeScript ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ํ•ด์„๋˜๋ฉฐ ์ •ํ™•ํžˆ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋ž˜์•ผ ํ•˜๋“ฏ์ด ๊ฒฐ๊ณผ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ์—์„œ ์ฃผ๋ณ€์„ ์ฐŒ๋ฅด์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค.
๋ณ„์นญ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ์Šค์Šค๋กœ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค!

๋งค์šฐ ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๋†๋‹ด์„ ํ•˜์ง€ ์•Š๋Š” ํ•œ, ๋‚˜๋Š” ์ •๋ง๋กœ ๋งํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

TypeScript๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ์ปดํŒŒ์ผ๋Ÿฌ์— ๋ถ€๋ถ„์ ์œผ๋กœ๋งŒ ๊ตฌํ˜„๋œ ์ž‘์—…์„ ์™„๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด ํƒ€์‚ฌ ๋„๊ตฌ ์—†์ด _์ž‘๋™_ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

TypeScript ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ •ํ™•ํžˆ ํ•ด์•ผ ํ•  ์ผ์„ ํ•ฉ๋‹ˆ๋‹ค!

์ด ์Šค๋ ˆ๋“œ๊ฐ€ tsc ๋„ ์ถ•์†Œ ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ์‚ฌ๋žŒ๋“ค๋กœ ๊ฐ€๋“ ์ฐจ ์žˆ๋‹ค๋ฉด ๊ท€ํ•˜์˜ ์˜๊ฒฌ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ๋žŒ๋“ค์ž…๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ๋„ˆ๋ฌด ๋งŽ์€ ๊ฒƒ์„ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‚˜์š”?

๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
JavaScript ์—”์ง„์—์„œ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ๋งŽ์€ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ C++ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ๋น„๋‚œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
๋™์  ๋งํฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š์Œ
์ด๊ฒƒ๋“ค์ด ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

์ƒ๋Œ€๊ฒฝ๋กœ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉด ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋ฉฐ,
Angular๊ฐ€ WebPack์—์„œ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋˜๋Š” ๋‚ด๊ฐ€ ํ•˜๋“ฏ์ด ์ฑ…์ž„์„ ์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
TSPath๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  TypeScript ํ”„๋กœ์ ํŠธ!

์ž‘์—… ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋ฉด ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.
์—ฌ๊ธฐ์—์„œ ์ด๊ฒƒ์ด Microsoft์˜ ์ฑ…์ž„์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ธฐ๋Šฅ์„ ์ œ๊ณตํ–ˆ์œผ๋ฉฐ ์ž‘๋™ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์›ํ•˜๋Š” ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ž‘๋™ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
ํ‹€๋ ธ์–ด!

๋˜ํ•œ, ๋‚˜๋Š” ๋‹น์‹ ์ด ์ง„์ง€ํ•˜๊ฒŒ ์ด๊ฒƒ์ด ๋‹น์‹ ์„ ๋ฐฉํ•ดํ•˜๋„๋กํ•˜๊ณ  ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.
TypeScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

1์›” 14์ผ ๋ด 2019 kl 21:34 skrev ๋กœ๋ฒ„ํŠธ ๋ฉ”์ธ ์•Œ๋ฆผ @github.com :

TypeScript ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ •ํ™•ํžˆ ํ•ด์•ผ ํ•  ์ผ์„ ํ•ฉ๋‹ˆ๋‹ค!

์ด ์Šค๋ ˆ๋“œ๊ฐ€ tsc๋„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ์‚ฌ๋žŒ๋“ค๋กœ ๊ฐ€๋“ ์ฐจ ์žˆ๋‹ค๋ฉด
์ถ•์†Œ ๋˜๋Š” ์ด์™€ ๊ฐ™์€ ๊ฒƒ, ๋‚˜๋Š” ๋‹น์‹ ์—๊ฒŒ ๋™์˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์˜
์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ์‚ฌ๋žŒ๋“ค. ๋‚˜๋Š” ์ •๋ง
์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ๋„ˆ๋ฌด ๋งŽ์€ ๊ฒƒ์„ ์š”๊ตฌํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/Microsoft/TypeScript/issues/10866#issuecomment-454151277 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAAy_7FeuOJanI9bXYSVgf_YghJluTyGks5vDOnEgaJpZM4J6vZQ
.

์ด๊ฒƒ์€ ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  Angular๊ฐ€ WebPack์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋˜๋Š” ๋‚ด๊ฐ€ TSPath๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  TypeScript ํ”„๋กœ์ ํŠธ์—์„œ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ƒ๋Œ€ ๊ฒฝ๋กœ์— ๋Œ€ํ•œ ์ฑ…์ž„์„ ์ง€๋Š” ๊ฒฝ์šฐ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค!

์ด๊ฒƒ์€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊นจ์ง„ ์ฝ”๋“œ๋ฅผ ์ถœ๋ ฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ฒฝ๋กœ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ•œ ์ค„์˜ ์ฝ”๋“œ๋งŒ ์ž‘์„ฑํ•˜๋ฉด ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

TS๊ฐ€ ์ถœ๋ ฅ๋œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์™ธ๋ถ€ ๋ฒˆ๋“ค๋Ÿฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ์‚ฌ์‹ค์€ ๋„ˆ๋ฌด๋‚˜ ๋‹น์—ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
JavaScript ์—”์ง„์—์„œ ์ง€์›ํ•˜์ง€ ์•Š์Œ,

์ €๋Š” ํ•ญ์ƒ TypeScript๊ฐ€ JavaScript๋กœ ์ปดํŒŒ์ผ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ๊ธฐ๋Šฅ์ด JavaScript ์—”์ง„์—์„œ ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋งํ•˜๋ฉด ์ •ํ™•ํžˆ ์™œ ๊ฑฐ๊ธฐ์— ์žˆ์Šต๋‹ˆ๊นŒ?

์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋™์  ๋งํฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋กœ๊ทธ๋žจ์ด ๋จธ์‹ ์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด C++ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ๋น„๋‚œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”, ํ•˜์ง€๋งŒ ์ปดํŒŒ์ผ๋Ÿฌ ์˜ค๋ฅ˜๋‚˜ ๊ฒฝ๊ณ  ์—†์ด ์‹ค์ œ๋กœ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋‹ค๋ฅธ C++ ์ฝ”๋“œ์— ๋งํฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค๋ฉด ๋น„๋‚œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ •๋ง ์ดํ•ด๊ฐ€ ์•ˆ ๋˜์‹œ์ฃ ? ์ฝ”๋“œ๊ฐ€ ๊นจ์ง€์ง€ ์•Š์€ ๊ฒฝ์šฐ
์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ๊ตฌ์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊นจ์ง„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ๊ฒฝ์šฐ "ํ”Œ๋žซํผ"์ด ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด
๋ณ„์นญ!

๊ท€ํ•˜์˜ ๊ฒฝ์šฐ ๋ณ„์นญ์„ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. "๋‹น์‹ "์€ ๋ณ„์นญ์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ง„์ง€ํ•˜๊ฒŒ!

์ด๊ฒƒ์ด 1์ค„ ์ˆ˜์ •์ด๋”๋ผ๋„(๋ฌผ๋ก  ๊ทธ๋ ‡์ง€๋Š” ์•Š์Œ)
์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฌด์—‡์„ ํ•ด์•ผ ํ•˜๋Š”์ง€์™€
ํ•˜์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค! ์ด ๊ธฐ๋Šฅ์€ ๋กœ๋”๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋ฐ˜๋Œ€๋กœ ์ฝ๋‹ค
๊ณต์‹ ๋ฌธ์„œ์˜ ๊ฒฝ๋กœ ๋งคํ•‘์— ์žˆ์œผ๋ฏ€๋กœ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ž˜๋ชป๋œ!

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์ด ๊ธฐ๋Šฅ์€ Loaders/Resolvers๋ฅผ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ž‘๋™ํ•˜๋ฏ€๋กœ Microsoft
๋ณ„์นญ ์—†์ด ๋ถ™์—ฌ๋„ฃ์„ ์ˆ˜ ์žˆ๋„๋ก ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ๋ณ€๊ฒฝํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
์ง€์›ํ•˜๋Š” ํ™˜๊ฒฝ!

๋ดํ‹ฐ์Šค 1์›” 15์ผ 2019 kl 04:41 skrev Fabio Spampinato <
์•Œ๋ฆผ@github.com>:

์ƒ๋Œ€๊ฒฝ๋กœ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉด ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋ฉฐ,
Angular๊ฐ€ WebPack์—์„œ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋˜๋Š” ๋‚ด๊ฐ€ ํ•˜๋“ฏ์ด ์ฑ…์ž„์„ ์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
TSPath๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  TypeScript ํ”„๋กœ์ ํŠธ!

์ด๊ฒƒ์€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊นจ์ง„ ์ฝ”๋“œ๋ฅผ ์ถœ๋ ฅํ•˜๋„๋ก ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ•œ ์ค„์˜ ์ฝ”๋“œ๋งŒ ์ž‘์„ฑํ•˜๋ฉด ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฒฝ๋กœ.

TS๋Š” ์ถœ๋ ฅ๋œ ์ฝ”๋“œ๊ฐ€
์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๋งค์šฐ ์–ด๋ฆฌ์„์€ ์ผ์ž…๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/Microsoft/TypeScript/issues/10866#issuecomment-454256799 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAAy_zuWKV0qzzWt6_jZNgDLFt1TA0tMks5vDU3vgaJpZM4J6vZQ
.

๋กœ๋”๊ฐ€ ๊ฒฝ๋กœ ๋งคํ•‘์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์กด์žฌํ•˜๋ฏ€๋กœ ์ง€์›๋ฉ๋‹ˆ๋‹ค!
๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์ด (๋‚˜์ฒ˜๋Ÿผ) ๋กœ๋” ์—†์ด ๊ทธ๊ฒƒ๋“ค์„ ์‚ฌ์šฉํ•˜๋ผ๊ณ  ์ฃผ์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—,
๋ฌธ์ œ
๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋ดํ‹ฐ์Šค 1์›” 15์ผ 2019 kl 05:10 skrev ๋กœ๋ฒ„ํŠธ ๋ฉ”์ธ ์•Œ๋ฆผ @github.com :

๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
JavaScript ์—”์ง„์—์„œ ์ง€์›ํ•˜์ง€ ์•Š์Œ,

๋‚˜๋Š” ํ•ญ์ƒ TypeScript๊ฐ€ ๋‹ค์Œ์œผ๋กœ ์ปดํŒŒ์ผ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ. ํŠน์ • ๊ธฐ๋Šฅ์ด ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋งํ•˜๋ฉด
JavaScript ์—”์ง„์ด ์ •ํ™•ํžˆ ์™œ ๊ฑฐ๊ธฐ์— ์žˆ์Šต๋‹ˆ๊นŒ?

์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋™์  ๋งํฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ C++ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ๋น„๋‚œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋กœ๊ทธ๋žจ์ด ๋จธ์‹ ์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์€
์„ค์น˜?

์•„๋‹ˆ์š”, ํ•˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์€ ๋‹ค๋ฅธ C++ ์ฝ”๋“œ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค๋ฉด ๋น„๋‚œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์‹ค์ œ๋กœ ์ปดํŒŒ์ผ๋Ÿฌ ์˜ค๋ฅ˜๋‚˜ ๊ฒฝ๊ณ  ์—†์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/Microsoft/TypeScript/issues/10866#issuecomment-454260977 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAAy_25-ZmS235i1Ic7mvSzEt2QJDX6Bks5vDVTAgaJpZM4J6vZQ
.

์ด๋ด, ๋‚œ ๋‹น์‹ ์˜ ์š”์ ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ปดํŒŒ์ผ๋Ÿฌ ์ž‘์—…์˜ ์ผ๋ถ€๋Š” ๋งˆ์ง€๋ง‰์œผ๋กœ ํ•œ ๋ฒˆ ์ œ๋Œ€๋กœ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธฐ๊ปํ•ด์•ผ ์ปดํŒŒ์ผ๋˜์ง€๋งŒ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋Š” ์ผ๊ด€๋˜์ง€ ์•Š์€ ๋™์ž‘์ด๋ฉฐ ์ด ๋ฌธ์ œ๋ฅผ ์ฒ˜์Œ ์ฝ์—ˆ์„ ๋•Œ ๋ฌธ์„œ์—์„œ ๋ถ„๋ช…ํžˆ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋™์ž‘์„ ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค.

๋ฌธ์„œ์˜ ํ•ด๋‹น ์„น์…˜์„ ์•Œ๋ ค์ฃผ์„ธ์š”.

1์›” 15์ผ. 2019 ํด. 05:31 skrev ๋กœ๋ฒ„ํŠธ ๋ฉ”์ธ ์•Œ๋ฆผ @github.com :

์ด๋ด, ๋‚œ ๋‹น์‹ ์˜ ์š”์ ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ปดํŒŒ์ผ๋Ÿฌ ์ž‘์—…์˜ ์ผ๋ถ€๋Š” ์˜จ์ „ํ•œ
๋งˆ์ง€๋ง‰์œผ๋กœ ํ•œ ๋ฒˆ๋งŒ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์ปดํŒŒ์ผ๋˜์ง€๋งŒ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ์ตœ์ƒ์˜ ์ฝ”๋“œ๋Š”
์ผ๊ด€์„ฑ ์—†๋Š” ํ–‰๋™๊ณผ ๋‚ด๊ฐ€ ์ด ๋ฌธ์ œ๋ฅผ ์ฒ˜์Œ ์ฝ์—ˆ์„ ๋•Œ
๋ฌธ์„œ๋Š” ๋ถ„๋ช…ํžˆ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ–‰๋™์„ ์ œ์•ˆํ•˜๋Š” ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/Microsoft/TypeScript/issues/10866#issuecomment-454263854 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAAy_8e5v8IV-ynmjRTeoC3cp5llwnsIks5vDVm8gaJpZM4J6vZQ
.

์ด ๊ธฐ๋Šฅ์€ ๋กœ๋”๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋ฐ˜๋Œ€๋กœ ์ฝ๋‹ค
๊ณต์‹ ๋ฌธ์„œ์˜ ๊ฒฝ๋กœ ๋งคํ•‘์— ์žˆ์œผ๋ฏ€๋กœ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ž˜๋ชป๋œ!

https://austinknight.com/wp-content/uploads/2015/04/DesignVSUX.jpeg

@duffman ์—ฌ๊ธฐ ์‚ฌ๋žŒ๋“ค์ด ์ด ๊ธฐ๋Šฅ์„ ์›ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๊นŒ??? ์ด "๊ธฐ๋Šฅ"์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ์–ด๋ฆฌ์„๋‹ค๊ณ  ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ข‹์•„ - ๊ทธ๋ ‡๊ฒŒ ๋ณผ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ๋ˆ„๊ฐ€ ์•Œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์•„๋งˆ๋„ ๋ฐ˜๋Œ€์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค...

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ๋‚ด ์˜๊ฒฌ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ณ„์นญ์€ ์ปดํŒŒ์ผ๋Ÿฌ์— ๋‚ด์žฅ๋˜์–ด ์žˆ๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ์ปดํŒŒ์ผํ•˜๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ๊ฒƒ์ด ์ œ์•ˆํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ด ๋ฌธ์ œ๋Š” ๋‚ด๊ฐ€ ์˜ณ๋‹ค๋Š” ๊ฝค ์ข‹์€ ์ฆ๊ฑฐ์ž…๋‹ˆ๋‹ค). ๋น„๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ณด์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. "๊ณต์‹" ํŽธ์ง‘๊ธฐ(vscode - ํŠนํžˆ "์ž๋™ ๊ฐ€์ ธ์˜ค๊ธฐ" ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ vscode๋Š” ๋ณ„์นญ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉ)์—์„œ ์ž‘๋™ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ด๋ฉฐ, ๊ฒฐ๊ณผ ์ฝ”๋“œ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๋•Œ ์ปดํŒŒ์ผ๋Ÿฌ๋„ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? "js ์—”์ง„์ด ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•˜๋ฉด ๋” ๋ฌป๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. TS๋Š” ์ผ๋ถ€ JS "๋ฌธ์ œ"๋ฅผ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ์—ˆ๋‚˜์š”?

๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•œ ๋‘ ๊ฐ€์ง€ ํ•ด๊ฒฐ์ฑ… ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.
1) ๋ณ„์นญ์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์žฌ์ •์˜
2) ๊ฒฝ๊ณ  ํ‘œ์‹œ

"์˜ฌ๋ฐ”๋ฅธ ํ–‰๋™"์ด๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์€ ์ž˜๋ชป๋œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. TS๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด๊ฐ€ ์•„๋‹ˆ๋ฉฐ C/C++๋„ ์•„๋‹™๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ํŒ€์€ ๋ณ„์นญ ํ™•์ธ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค
tsconfig์˜ ์ปดํŒŒ์ผ๋Ÿฌ ํ™•์ธ์„ ์œ„ํ•œ ํ‚ค์ž…๋‹ˆ๋‹ค.

๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๊ฐ€ ์ข‹๋‹ค!!!!!!

๋ณ„์นญ์ด ์žˆ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ์„ ํ•˜๋ ค๋ฉด ์—ฌ๋Ÿฌ๋ถ„์˜ ๋„์›€์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

:( ์—ฌ๊ธฐ ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์€
์ผ๊ด€์„ฑ. Typescript๋Š” ๊ต‰์žฅํ•ฉ๋‹ˆ๋‹ค, ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค...

์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์‚ฌ๋ž‘ํ•ฉ๋‹ˆ๋‹ค!

๋…ธ์ˆ™์ž ๊ฐœ๋ฐœ์ž ์•ˆ๋ถ€...

El mar., 15 de ene. 2019๋…„ 08:02, Mike S. [email protected]
๊ธฐ๋ก:

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ๋‚ด ์˜๊ฒฌ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ณ„์นญ์€ ์ปดํŒŒ์ผ๋Ÿฌ์— ๋‚ด์žฅ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ปดํŒŒ์ผ์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์‚ฌ์šฉ์ž๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
๊ทธ๋“ค์ด ์ƒ๊ฐํ•˜๋Š” ๋Œ€๋กœ ์ž‘๋™ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(์ด ๋ฌธ์ œ๋Š”
๊ทธ๊ฒƒ์ด ์‚ฌ์‹ค์ด๋ผ๋Š” ์ข‹์€ ์ฆ๊ฑฐ). ๋น„๋…ผ๋ฆฌ์  ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์™œ ๋ฌด์–ธ๊ฐ€๊ฐ€ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?
"๊ณต์‹" ํŽธ์ง‘๊ธฐ(vscode - ํŠนํžˆ "์ž๋™ ๊ฐ€์ ธ์˜ค๊ธฐ" ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ๋•Œ,
vscode๋Š” ๋ณ„์นญ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•จ), ๊ฒฐ๊ณผ ์ฝ”๋“œ์—์„œ ์ปดํŒŒ์ผ๋Ÿฌ๋„ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ์ด์œ 
์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค? "js ์—”์ง„์ด ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•˜๋ฉด ๋ฌป๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
๋” ๋‚˜์•„๊ฐ€ - TS๋Š” JS "๋ฌธ์ œ" ์ค‘ ์ผ๋ถ€๋ฅผ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ์—ˆ๋‚˜์š”?

๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•œ ๋‘ ๊ฐ€์ง€ ํ•ด๊ฒฐ์ฑ… ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ณ„์นญ์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์žฌ์ •์˜
  2. ๊ฒฝ๊ณ  ํ‘œ์‹œ

"์˜ฌ๋ฐ”๋ฅธ ํ–‰๋™"์ด๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์€ ์ž˜๋ชป๋œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. TS๋Š” ์•„๋‹ˆ๋‹ค
C/C++๋„ ์•„๋‹Œ ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/Microsoft/TypeScript/issues/10866#issuecomment-454384357 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/ACKT9OqexgOaHH1vDFuRcO7U_r2DEC23ks5vDdFbgaJpZM4J6vZQ
.

. TS๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด๊ฐ€ ์•„๋‹ˆ๋ฉฐ C/C++๋„ ์•„๋‹™๋‹ˆ๋‹ค.

TS๊ฐ€ C++๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ์ ์„ ํ™•์ธํ•˜์—ฌ ์ง€์ ํ•˜๋ ค๋Š” ๋‚ด์šฉ์„ ์ •๋ง ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋Œ€๋ถ€๋ถ„์€ ๊ทธ ์ ์„ ์ž˜ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค!

์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ๋ณ„์นญ/๊ฒฝ๋กœ ๋งคํ•‘์ด ์ „ ์„ธ๊ณ„์˜ ํ”„๋กœ๋•์…˜์—์„œ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ VS Code๋Š” ๋‹น์—ฐํžˆ ์ด๋ฅผ ์ง€์›ํ•ด์•ผ ํ•˜์ง€๋งŒ ์„ค์ •์— ๋งž๊ฒŒ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹MS๊ฐ€ ์ฃผ์žฅํ•˜๋Š” ๋ฐ”๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค!

๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์™œ ๊ณ„์† ์‚ฌ์šฉํ•˜๋Š”์ง€, ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ž‘๋™ํ•ด์•ผ ํ•˜๋Š” ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€, ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ธฐ๋Šฅ์ด ๋ฌด์—‡์„ ์œ„ํ•œ ๊ฒƒ์ธ์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋Š” ๋ฌธ์„œ๋ฅผ ์ฝ์œผ์‹ญ์‹œ์˜ค!

๋‚ด ๋ง์€ 2๋ถ„ ์•ˆ์— ๊ฒฝ๋กœ ๋ณ„์นญ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” TS ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. WebPack์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด TSPath๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 1์ดˆ ์•ˆ์— ๋ชจ๋“  js ํŒŒ์ผ์˜ ๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ํ™•์ธํ•˜๊ณ  ํŒจํ‚ค์ง€์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .json์„ ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•  ํ•„์š”๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์›๋ž˜๋Œ€๋กœ ์ž‘๋™ํ•˜๋ฉฐ ๊ณ„์†ํ•ด์„œ ํ–‰๋ณตํ•œ ๋งŒ์„ธ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!?

๋˜๋Š” ์‹ค์ œ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ๋ถ„๊ธฐํ•˜์—ฌ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ํฐ ์„ฑ๊ณต์„ ๊ฑฐ๋‘๊ฑฐ๋‚˜ ์‚ฌ๋žŒ๋“ค์ด ์„ค์ •ํ•œ ์ดํ›„๋กœ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ํ–‰๋ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ณ„์นญ์„ ์ง€์›ํ•˜๋Š” ํ™˜๊ฒฝ.

TypeScript ๊ธฐ์—ฌ์ž ์ƒ์œ„ 5๋ช… ์†Œํ™˜: @ahejlsberg @andy-ms @DanielRosenwasser @sandersn @sheetalkamat

TypeScript ํŒ€์ด ์ด ๋ฌธ์ œ๋ฅผ ์žฌ๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ์ด ์Šค๋ ˆ๋“œ๊ฐ€ ๋‘ ๊ฐ€์ง€ ๊ด€์ ์— ๋Œ€ํ•œ ์œ ์šฉํ•œ ํ† ๋ก ์„ ์ œ๊ณตํ•˜๊ณ  ์ตœ๊ทผ์˜ ์ธ๊ธฐ์™€ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋‹ค์‹œ ์‚ดํŽด๋ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์˜ ์ƒํƒœ๋Š” TS๋ฅผ ์œ ํ˜• ๊ฒ€์‚ฌ๊ธฐ ์˜๋ฌด๋กœ๋งŒ ๊ฐ•๋“ฑํ•˜๋Š” ๊ฒƒ ์™ธ์— ๋‹ค๋ฅธ ์„ ํƒ์˜ ์—ฌ์ง€๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
Babel์€ ์ด์ œ TS ๊ตฌ๋ฌธ์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์ง€์›์„ ์ œ๊ณตํ•˜๋ฉฐ babel-plugin-module-resolver ์™€ ํ•จ๊ป˜ ์ด ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ์ž‘์—… ์ฝ”๋“œ๋ฅผ ๋‚ด๋ณด๋‚ด๋Š” ์ž‘์—…์„ ์ž˜ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
์œ ์ผํ•œ ๋‹จ์ ์€ Babel์ด TS ๊ตฌ์„ฑ์— ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— tsconfig.json ์—์„œ ๊ตฌ์„ฑ ๋น„ํŠธ๋ฅผ ๋ณต์ œํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋…ธ๋“œ ํ”„๋กœ์ ํŠธ์—์„œ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ž‘์—…ํ•˜๋Š” ๋ฐ๋Š” ์ˆ˜์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ€๊ฒฉ์ด๋ฉฐ ๋ณด๋„ˆ์Šค๋กœ babel ๋งคํฌ๋กœ์™€ ๊ฐ™์€ ๋ฉ‹์ง„ ๊ธฐ๋Šฅ์œผ๋กœ ์ „์ฒด ์ƒํƒœ๊ณ„๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ tsc ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์—…ํ•œ ์ตœ์†Œ ์„ค์ •์ž…๋‹ˆ๋‹ค.

  • npm install --save-dev @babel/cli @babel/core @babel/preset-env @babel/preset-typescript babel-plugin-module-resolver @babel/plugin-proposal-class-properties @babel/plugin-proposal-object-rest-spread
  • package.json :
    tsc -> tsc && babel ./src --out-dir ./dist --extensions ".ts,.js"
  • tsconfig.json :
{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@mynamespace/*": ["src/*"]
    },
    "outDir": "./dist",
    "noEmit": true, <--
    "allowJs": true,
    "target": "ES2017",
    "module": "CommonJS",
    "lib": [
      "ES2017"
    ]
  },
  "include": [
    "./src/**/*"
  ]
}

  • .babelrc :
{
  "presets": [
    "@babel/preset-typescript",
    ["@babel/preset-env", {
      "targets": {
        "node": true
      }
    }]
  ],
  "plugins": [
    ["module-resolver", {
      "root": ["./src"],
      "alias": {
        "@mynamespace": "./src"
      },
      "extensions": [".js", ".ts"]
    }],
    "@babel/plugin-proposal-class-properties",
    "@babel/plugin-proposal-object-rest-spread"   
  ]
}

์ ˆ๋Œ€ ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋Š” typescript๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€๋งŒ webpack์ด๋‚˜ babel ๋“ฑ์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ„๋‹จํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๋„ˆ๋ฌด ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋” ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค ๐Ÿ˜ž

์ด ๋ฌธ์ œ๋ฅผ ์ธ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ํŠน์ • ์‚ฌํ•ญ์„ ์•Œ๊ณ  ์žˆ์—ˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋‚ด ๊ฐœ์ธ ์„ค์ •์œผ๋กœ ์ธํ•œ ๋ฌธ์ œ์ด๊ฑฐ๋‚˜ ์•„๋งˆ๋„ ๋‚˜๋Š” :) ์Šˆํผ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
๋ฌด๊ฑฐ์šด ์ˆ˜์ •, ์ˆ˜์ •์€ ๋‹จ์ˆœํžˆ distPath๋ฅผ (๋งน๋ชฉ์ ์œผ๋กœ) ์‹ ๋ขฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
ํ˜„์žฌ ์†”๋ฃจ์…˜๋ณด๋‹ค ์‹ค์ œ๋กœ ์ ์  ๋” ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.
๋‚ด์ผ๊นŒ์ง€ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜์„ธ์š”...

๋ด ์›” 28์ผ 1์›” 2019 kl 15:59 skrev ๅถไผŸไผŸ[email protected] :

์ ˆ๋Œ€ ๊ฒฝ๋กœ์™€ ํ•จ๊ป˜ typescript๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€๋งŒ
config webpack ๋˜๋Š” babel ๋˜๋Š” ๋ฌด์–ธ๊ฐ€, ๊ทธ๊ฒƒ์€ ๋‹ฌ์„ฑํ•˜๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์–ด๋ ต์Šต๋‹ˆ๋‹ค!!!

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/Microsoft/TypeScript/issues/10866#issuecomment-458164055 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAAy_1_T-An7swSND-xdBhL0HNHxQkm6ks5vHxBggaJpZM4J6vZQ
.

paths ์˜ ํ˜„์žฌ ๋™์ž‘์— ๋Œ€ํ•œ ์‹ค์ œ ๋ฌธ์„œํ™”๋œ ์‚ฌ์šฉ ์‚ฌ๋ก€ ๊ฐ€ ์ด ์Šค๋ ˆ๋“œ์—์„œ ์–ธ๊ธ‰๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์— ๋‚จ๊ฒจ๋‘ก๋‹ˆ๋‹ค. @types/ ํŒจํ‚ค์ง€๋Š” semver์™€ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ์„ ๋ฐฑํฌํŠธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์—๋Š” ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ด์ „ API์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋œ ์œ ํ˜•์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด history@3 history@2 $#$๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

"paths": {
    "history": [ "history/v2" ]
}

์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์œ ํ˜• ๋ณ„์นญ๊ณผ "์ฝ”๋“œ" ๋ณ„์นญ์„ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ์˜ต์…˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๊ฒฝ๋กœ ๋ณ„์นญ์„ ๋‚ด๋ณด๋‚ด๋„๋ก ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์˜ฌ๋ฐ”๋ฅธ ์œ ํ˜• ๋ฒ„์ „์„ ์ฐพ๋Š” ๊ธฐ๋Šฅ์„ ์ปดํŒŒ์ผ๋Ÿฌ์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ œ์•ˆ๋œ ํ–‰๋™์— ๋Œ€ํ•œ ์ฃผ์žฅ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ฐจ๋ผ๋ฆฌ ๋ณ„์นญ์„ ๋‚ด๋ณด๋‚ด๊ณ  ์œ ํ˜• ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ž‘์—… ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์‚ฌ๋žŒ๋“ค์ด ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ๋งŒํผ ์‚ฌ์†Œํ•˜์ง€ ์•Š์€ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ๋กœ ์ „์‚ฌ TS ์›Œํฌ์ˆ์—์„œ ์ด ์–ด๋ฆฌ์„๊ณ  ๋‹นํ˜น์Šค๋Ÿฌ์šด ํ–‰๋™์„ ์„ค๋ช…ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค...

์ง„์ง€ํ•˜๊ฒŒ!

์–ด๋–ค ์ข…๋ฅ˜์˜ ์–ธ์–ด ์ปดํŒŒ์ผ๋Ÿฌ, ํŠนํžˆ ๊ธฐ๋ณธ ํŒ๋งค ํ”ผ์น˜๊ฐ€ JavaScript์— ๋Œ€ํ•œ ์ •ํ™•์„ฑ์ด ๋” ๋†’์€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ "๊ธฐ๋Šฅ"์œผ๋กœ ๊นจ์ง„ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๊นŒ?!?!

์ œ ๋Œ“๊ธ€์— ๋„ˆ๋ฌด ๋‹ต๋‹ตํ•ด ๋ณด์—ฌ์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ฒฌํ•ด๋Š” ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฌด์‹œ๋˜๊ณ  ๊ฒฝ์‹œ๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๊ฒŒ ๋ช‡ ๋ฒˆ์ด๋‚˜ ์ฐธ์กฐ๋˜์—ˆ๋Š”์ง€ ๋ณด์„ธ์š”... ๊ทธ๋ ‡๊ฒŒ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์‹œ๊ฐ„๊ณผ ๊ด€์‹ฌ์„ ๋‚ญ๋น„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์˜ ์ขŒ์ ˆ์„ ์ดํ•ดํ•˜์ง€๋งŒ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํ–‰๋™์ด ์˜ณ๋‹ค๊ณ  ๋Š๋ผ๋Š” ๊ฒƒ์ด ๊ทธ๊ฒƒ์ด ์˜ณ์€ ์ผ์ด๋ผ๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

TypeScript ์žฌ์ž‘์„ฑ ๋ชจ๋“ˆ ์‹๋ณ„์ž๋Š” ๋ฏธ๋„๋Ÿฝ๊ณ  ๋ฏธ๋„๋Ÿฌ์šด ๊ฒฝ์‚ฌ์ž…๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ์—์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ํ‘œํ˜„๋œ ๊ฒƒ์€ TypeScript๊ฐ€ ๋Œ€์ฒดํ•˜๊ฑฐ๋‚˜ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ๋ชจ๋“ˆ ํ•ด์„๊ธฐ ๋ฐ ๊ธฐํƒ€ ๋นŒ๋“œ ๋„๊ตฌ์˜ ๋™์ž‘์„ ๋ชจ๋ธ๋งํ•˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

TypeScript๊ฐ€ ๋ชจ๋“ˆ์„ ์œ ์—ฐํ•œ ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ•˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ด์„œ TypeScript๊ฐ€ "๊นจ์ง„ ์ฝ”๋“œ"๋ฅผ ๋‚ด๋ณด๋‚ด๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด ๊ตฌ์„ฑ์„ ๋ฏธ๋Ÿฌ๋งํ•˜๋Š” ํŠน์ • ๋กœ๋” ๋ฐ ๋ฒˆ๋“ค๋Ÿฌ๋Š” ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ค ๊ฒƒ์— ๋Œ€ํ•ด ๋น„ํŒ์ ์ด๋ผ๋ฉด, ์šฐ๋ฆฌ๋Š” ๊ฒฐ์ฝ” ์ˆ˜์ •ํ•  ์˜๋„๊ฐ€ ์—†์—ˆ๋˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์˜ ์ด๋ฆ„์„ ์ง€์ •ํ–ˆ๋‹ค๊ณ  ํŒ€์„ ๋น„๋‚œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .

ํŠน์ • ๋„๊ตฌ๊ฐ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•œ๋‹ค๊ณ  ํ•ด์„œ ํ•ญ์ƒ ๊ทธ ๋„๊ตฌ๊ฐ€ ์ž˜๋ชป๋˜์—ˆ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๋„๊ตฌ๊ฐ€ ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@kitsonk ๋‹น์‹ ์ด ๋ฐฉ๊ธˆ ๋งํ•œ ๋ชจ๋“  ๊ฒƒ์€ ๊ธฐ์ค€์—์„œ ๋ฒ—์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” TS๊ฐ€ ๊ฐœ๋ฐœ/ํ…Œ์ŠคํŠธ ์ค‘์— ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ์ž‘๋™ํ•˜๊ณ  ์ปดํŒŒ์ผ์ด ์™„๋ฃŒ๋œ ํ›„์— ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

TS๊ฐ€ ๋ชจ๋“ˆ ๋ฆฌ์กธ๋ฒ„๊ฐ€ ๋˜๋ ค๋ฉด ํŒจํ„ด์„ ์„ ํƒํ•˜๊ณ  ๊ณ ์ˆ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ts-node ๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋งˆ์น˜ TS๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  node ๋กœ ์‹คํ–‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ •ํ™•ํžˆ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡์ง€ ์•Š๊ณ  ๊ทธ๊ฒƒ์ด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ๋ชจ๋“ˆ ๋งต์€ ๋ฏธ๋ž˜์— ์ขŒ์ ˆ๊ฐ์„ ๋œ์–ด์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๊ฐ€ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•˜๋Š” ๊ธฐ์ˆ ์  ๋ฌธ์ œ์™€ ํ•จ๊ป˜ ์šฐ๋ฆฌ์˜ ์ž…์žฅ์€ ๋งค์šฐ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๋กœ ๋งคํ•‘์€ ์™ธ๋ถ€ ํ•ด๊ฒฐ ์ฒด๊ณ„์˜ ๋™์ž‘์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: AMD ๋ฐ System.js์˜ ๊ฒฝ๋กœ ๋งคํ•‘, Webpack ๋ฐ ๊ธฐํƒ€ ๋ฒˆ๋“ค๋Ÿฌ์˜ ๋ณ„์นญ). ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๋‹น์‹ ์˜ ๊ธธ์„ ๋ฐ”๊ฟ€ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ตœ๊ทผ ๋…ผ์˜๊ฐ€ ์ตœ๊ทผ์— ๊ฑด์„ค์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์œผ๋ฉฐ ํ–ฅํ›„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋„ ์˜ˆ์ƒํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด ๋ฌธ์ œ๋ฅผ ์ž ๊ทธ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰