ํ์ ์คํฌ๋ฆฝํธ ๋ฒ์ : 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๊ฐ ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ํด๊ฒฐํ๊ณ ๋
ธ๋๊ฐ ํด๊ฒฐํ ์ ์๋ ๊ฒ์ผ๋ก ๋์ฒดํ ๊ฒ์ผ๋ก ์์ํ์ต๋๋ค.
์ด ๋์์ด ์๋๋ ๊ฒฝ์ฐ ๋ ธ๋์ ํจ๊ป ์๋ ๊ฐ์ ธ์ค๊ธฐ ์ง์ฅ์ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฒฝ๋ก ๋งต์ ์ด๋ป๊ฒ ์ฌ์ฉํ ์ ์์ต๋๊น?
์์ฑ๋ ์ถ๋ ฅ์ 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/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
์ปดํ์ผ ์๊ฐ ๋ณ์นญ
๋๋
ํค๋๋ฆฌ์ค(๋น๋ ์๋ฒ์์ ๋งค์ฐ ์ ์ฉํจ)
๊ทธ๋ฐ ๋ค์ ์๋ฃ๋์์ต๋๋ค. ์ด์ 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 "๋ฌธ์ " ์ค ์ผ๋ถ๋ฅผ ์ํํ๊ธฐ ์ํ ๊ฒ์ด ์๋์๋์?๋๋ ์ด๊ฒ์ ๋ํ ๋ ๊ฐ์ง ํด๊ฒฐ์ฑ ์ค ํ๋๋ฅผ ๊ธฐ๋ํฉ๋๋ค.
- ๋ณ์นญ์ผ๋ก ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ ์
- ๊ฒฝ๊ณ ํ์
"์ฌ๋ฐ๋ฅธ ํ๋"์ด๋ผ๊ณ ๋งํ๋ ๊ฒ์ ์๋ชป๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ ์ง ์๋ค. 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 ๋ฐ ๊ธฐํ ๋ฒ๋ค๋ฌ์ ๋ณ์นญ). ๊ทธ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ๋น์ ์ ๊ธธ์ ๋ฐ๊ฟ ๊ฒ์ด๋ผ๋ ๊ฒ์ ์๋ฏธํ์ง ์์ต๋๋ค.
์ต๊ทผ ๋ ผ์๊ฐ ์ต๊ทผ์ ๊ฑด์ค์ ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ผ๋ฉฐ ํฅํ ๋ณ๊ฒฝ ์ฌํญ๋ ์์ํ์ง ์์ผ๋ฏ๋ก ์ด ๋ฌธ์ ๋ฅผ ์ ๊ทธ๊ฒ ์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ฐฉ์ถ๋ ๊ฒฝ๋ก ์ด๋ฆ์ด ์ค์ ๋ก ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒฝ์ฐ ๋๊ตฐ๊ฐ ์ด ๊ธฐ๋ฅ์ ์์ ์ด ๋ฌด์์ธ์ง ๋งํด ์ค ์ ์์ต๋๊น? ์ฆ, TypeScript ์ปดํ์ผ๋ฌ๊ฐ ๋ง์กฑํ์ง๋ง ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ์คํํ ์ ์๋ ๊ฒฝ์ฐ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉ ์ฌ๋ก๋ ๋ฌด์์ ๋๊น?