TypeScript ๋ฒ์ : ์ผ๊ฐ (2.3.0-dev.20170417)
์ํธ
function f() {}
์์๋๋ ๋์ :
--isolatedModules
ํ๋ก์ ํธ์ ๋ชจ๋์ด ์๋ ํ์ผ์ ๋ํ ์ค๋ฅ ๋๋ ์ค๋ฅ ๋ฉ์์ง๊ฐ ์์ต๋๋ค.
์ค์ ํ๋ :
src/a.ts(1,1): error TS1208: Cannot compile namespaces when the '--isolatedModules' flag is provided.
์ด๊ฒ์ program.ts
verifyCompilerOptions
์์ ์ธ๋ถ ๋ชจ๋ ์ ์ธ์ด ์๋ ์์ค ํ์ผ์ ์ฐพ๊ณ ๊ทธ๊ฒ์ด ๋ฌด์์ด๋ ๊ฐ์ ์ฒซ ๋ฒ์งธ ํ์ผ์์ ์คํจํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํฉ๋๋ค.
์ค๋ฅ ๋ฉ์์ง๋ ๋ค์ ์คํ์ด์ค๊ฐ ์๋์ด ์ค๋ฅ๋ฅผ ๋ฐ์์ํค๋ ์ค์ ์ด์ ๋ฅผ ๋ฐ์ํ๋๋ก ์
๊ทธ๋ ์ด๋ํด์ผํฉ๋๋ค.
๋๋ ๊ฐ์ ธ ์ค๊ธฐ์์ด ํ์ผ ๋ง ํ์ฉํ๊ณ ์ด ์ค๋ฅ๋ฅผ ์ถ๊ฐํ๊ธฐ ์ ์ ์ค์ ๋ก ๋ค์ ์คํ์ด์ค๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
์ค๋ฅ ๋ฉ์์ง๋ ๋ ๋ช
ํํด์ผํฉ๋๋ค. namespaces
๋์ non-module
๋งํ ์ ์์ต๋๋ค. @DanielRosenwasser ์ถ์ฒ?
์ด ์ํฉ์์๋ ์ค๋ฅ ๋ฉ์์ง๊ฐ ์์ด์ผํฉ๋๋ค. --isolatedModules ์ต์ ์ ๋ด๋ถ ๋ชจ๋ ์์คํ ์ ์์ ํ ๊บผ์ผํฉ๋๋ค. ๋ง์ฝ tsc๊ฐ ์ฌ์ ํ ์ด๋ฐ ์์ผ๋ก ์ค๋ฅ๋ฅผ ์ผ์ผํค๋ฉด ์ต์ ์ด ์ ์ญํ ์ํ์ง ์์ ๊ฒ์ ๋๋ค.
# 15839์์ ๋๋ ๊ฒ์ฌ ๋์์ ์์ ํ๋ ค๊ณ ํ์ง๋ง ๋์ค์์ด ๊ฒ์ฌ๊ฐ ๋ฌด์๋ฏธํ๊ณ ์ด์์ ์ธ ํด๊ฒฐ์ฑ
์ ๊ทธ๊ฒ์ ์ ๊ฑฐํ๋ ๊ฒ์์ ๊นจ๋ฌ์์ต๋๋ค.
Typescript๋ ํญ์ --isolatedModules
์๋ ์ธ๋ถ ๋ชจ๋ ๋ด๋ถ์ ๋ค์ ์คํ์ด์ค ์ฌ์ฉ์ ํ์ฉํ์ต๋๋ค.
export function something() {} // export found, so this module is considered 'external'
namespace ns {} // namespace is still valid in an external module
๋ฐ๋ผ์ ์ํ๋ ๋ถ๋ง์ ์ ๊ธฐํด์ผ ํ ๋ (์ ํจํ์ง ์์ ๊ฒ์ฒ๋ผ ๋ณด์ด๋) ๊ฒฝ์ฐ์ ์๋ฌด๊ฒ๋ํ์ง ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ํ๋ก๊ทธ๋๋จธ๊ฐ ์๋ฌด ๋ค์ ์คํ์ด์ค๋ ์ฌ์ฉํ์ง ์๊ณ ์๋ฌด ์๋ชป๋ํ์ง ์๊ณ ๋ถํํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
@wilonth ์ด ๋ฌธ์ ์ ์ด์ ๋ ์ค๋ฅ ๋ฉ์์ง๊ฐ ์๋ชป ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค. (es6) ๋ชจ๋์ ์ผ๋ถ์ธ ๊ฒฝ์ฐ ๋ค์ ์คํ์ด์ค๋ ์๋ฒฝํ์ง๋ง ๋ชจ๋์ด ์๋ ํ์ผ์ ์ค๋ฅ ์ฌ์ผํฉ๋๋ค.
@ andy-ms์ด ์ค๋ฅ๋ฅผ ํ์ธํ๊ธฐ์ํ ์ ์ฒด ์ฝ๋๋ ๋ฌด์๋ฏธํ๋ฉฐ ์ฝ๋๋ฅผ ๋ ๋ณต์กํ๊ฒ ๋ง๋๋ ๋์ ์ ๊ฑฐํด์ผํ๋ค๋ ์ ์ ์ง์ ํ๋ ค๊ณ ํ์ต๋๋ค.
๋ด ์์ ์ --isolatedModules
๊ฐ ์ผ์ ธ์์ ๋ ๋ชจ๋ ํ์ผ์ด ์ธ๋ถ (ES6) ๋ชจ๋ ์ธ ๋ง์นจํ๋ก ๊ฐ์ฃผ๋์ด์ผํ๋ค๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฐ ์๋ฏธ์์ ๋ค์ ์คํ์ด์ค ์ฌ์ฉ์ ํฉ๋ฒ์ ์ด์ด์ผํฉ๋๋ค. ํ์ฌ๋ก์๋ ES6 ๋ชจ๋ ๋ด์์ ๋ค์ ์คํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ฒฝํ๊ฒ ํฉ๋ฒ์ ์
๋๋ค ( --isolatedModules
์ฌ์ฉ).
๋ด ์์ ์ --isolatedModules๊ฐ ์ผ์ ธ์์ ๋ ๋ชจ๋ ํ์ผ์ด ์ธ๋ถ (ES6) ๋ชจ๋ ์ธ ๊ธฐ๊ฐ์ผ๋ก ๊ฐ์ฃผ๋์ด์ผํ๋ค๋ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์ ์๋ฏธ๋ก ์ ๋ชจ๋์ด ํ๋ ์ด์์ ์ต์์ ๊ฐ์ ธ ์ค๊ธฐ ๋๋ ๋ด๋ณด๋ด๊ธฐ๊ฐ์๋ ํ์ผ์ด๋ผ๋ ๊ฒ์ ๋๋ค. ์ปดํ์ผ๋ฌ๋ฅผ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ ์ค์ํ์ง ์์ต๋๋ค.
@mhegazy ์ ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ท์น์ ์ฐ๋ฆฌ๊ฐ ์ฌ๊ธฐ์์๋ ๋ฌธ์ ์ ๊ทผ์์
๋๋ค. ์ด ๊ท์น์ ๊ฐ์ ธ ์ค๊ธฐ ๋๋ ๋ด๋ณด๋ด๊ธฐ๊ฐ์๋ ํ์ผ์ ๋ ๊ฑฐ์ ๋ด๋ถ ๋ชจ๋ ์์คํ
์ ์ผ๋ถ๋ก ๋ถ๋นํ๊ฒ ์ทจ๊ธํ๋ฏ๋ก --isolatedModules
๋ ํ์ผ์ ๊ฑฐ๋ถํฉ๋๋ค.
์ด์ ๊ท์น์ ๋ณ๊ฒฝํด์๋ ์๋ฉ๋๋ค. ๊ทธ๋ด ๊ฒฝ์ฐ ๋ง์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ง๋ง์ด ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ๋ง์ผ๋ก๋ ํ์ฌ ๋ฌธ์ ๋ฅผ ๋งค์ฐ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์ต๋๋ค.
์ด "cannot compile namespaces"์ค๋ฅ ๋ฉ์์ง๊ฐ ์ ๊ฑฐ๋์๋ค๊ณ ์์ํด ๋ด
์๋ค. ๋ฌด์์ด ์๋ชป ๋ ์ ์์ต๋๊น? Typescript ์ปดํ์ผ๋ฌ ์์ฒด์ ๊ฐ์ด ๋ด๋ถ ๋ชจ๋์ ์ฌ์ฉํ๋ ์ฝ๋๋ฒ ์ด์ค๋ ์ด๋ป์ต๋๊น? --isolatedModules
๋ฅผ ์ผ๋ฉด ๊ฐ๋น์ง ์ฝ๋๋ก ์ปดํ์ผ๋์ด ์ฌ์ฉ์๋ฅผ ํผ๋์ค๋ฝ๊ฒํ ๊น์? ๊ทธ๋ ์ง ์์ต๋๋ค. --isolatedModules
๊ฐ ํ์ผ ์ฌ์ด์ ๋งํฌ๋ฅผ ๊นจ๋จ ๋ ธ๊ธฐ ๋๋ฌธ์ ์ ์๋์ง ์์ ๊ธฐํธ์ ๋ํ Typescript ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋ง์ ๊ฒ์
๋๋ค.
์ด ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ ๊ฑฐํ๋ฉด ์ด๋ค ๋จ์ ์ด ์์ต๋๊น? ๋๋ ํ ์ ์์๋ค. ์ ๋ก ์์
(์ค๋ง ์ ๊ฑฐ)๊ณผ ๋จ์ ์ด์๋ ๊ฐ์ฅ ์ฌ์ด ์๋ฃจ์
์ ์ ํํ์ง ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
--isolatedModules๋ฅผ ์ผ๋ฉด ๊ฐ๋น์ง ์ฝ๋๋ก ์ปดํ์ผ๋์ด ์ฌ์ฉ์๋ฅผ ํผ๋์ค๋ฝ๊ฒํ ๊น์? ์๋์
๋ค, ๊ทธ๋ ์ต๋๋ค.
--isolatedModules
ํ๋๊ทธ์ ์์ ์ ๋จ์ผ ํ์ผ ๋ณํ์ ํตํด ํ๋ก๊ทธ๋จ์ ์ฑ๊ณต์ ์ผ๋ก ์ปดํ์ผ ํ ์ ์๋์ง ํ์ธํ๋ ๊ฒ์
๋๋ค.
TypeScript ์ฝ๋๋ฒ ์ด์ค ๋ ๋จ์ผ ํ์ผ ํธ๋์ค ํ์ผ์ ํตํด ์ฑ๊ณต์ ์ผ๋ก ์ปดํ์ผ
file1
namespace ts {
export var x = 10;
}
file2
namespace ts {
var y = x; // transpiles to ts.x during whole-program compilation
}
๋จ์ผ ํ์ผ๋ก file2๋ฅผ ํธ๋์ค ํ์ผํ๋ฉด ์ค๋จ๋ฉ๋๋ค.
๋ด ๋์, ๋ด ํ ์คํธ๋ฅผ ๋ง์ณค์ต๋๋ค. ์ด๋ก์จ ์ ์์ ์ฒ ํํฉ๋๋ค. ์๊ธฐ์์ผ ์ฃผ์ @RyanCavanaugh ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋ฐ๋ผ์ ํด๊ฒฐ์ฑ
์ ๋ค์๊ณผ ๊ฐ์์ผํฉ๋๋ค.์ด ์ค๋ฅ ๋ฉ์์ง๋ฅผ ํ์ํ๊ธฐ ์ ์ ์ค์ ๋ค์ ์คํ์ด์ค ์ฌ์ฉ์ ๊ฐ์งํด์ผํฉ๋๋ค (์ : @ andy-ms๊ฐ ์ ์ํ "๋์"์๋ฃจ์
). ์ด ๊ฒฝ์ฐ ์ค๋ฅ ๋ฉ์์ง๊ฐ ์์ ํ ์๋ชป ๋์๊ธฐ ๋๋ฌธ์ ํ
์คํธ๋ฅผ ๋ค๋ฅธ ๊ฒ์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
PR์ํ๊ณ ์ถ์ง๋ง ๊ทธ ๋ชจ๋ ํ์๋ฆฌ๋ฅผ ๋ฑ์ด ๋ธ ํ์๋ ์ฌ์ ํ ์ฌ๊ธฐ์ ์ ๋ขฐํ ์ ์์ต๋๊น?
A global file cannot be compiled using '--isolatedModules'. Ensure your file contains imports, exports, or an 'export {}' statement.
๋จ์ผ ํ์ผ๋ก file2๋ฅผ ํธ๋์ค ํ์ผํ๋ฉด ์ค๋จ๋ฉ๋๋ค.
๊ฐ๋ น์ ์ ๋ํด ๋ฏธ์ํ์ง๋ง ๋ชจ๋์ ๋์์ผ๋ก ํ ๋ 'x' is not defined
์ ๊ฐ์ด ์คํจํด์ผํฉ๋๋ค. ๊ทธ ์ฌ๊ฑด์ ๋์๊ฒ ์ฌ์ํ ๊ฒ๊ณผ ๋ค๋ฅด์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
file1
var x = 10;
file2
var y = x;
๋ชจ๋์ด ์๋ ์ฐ๊ฒฐ / ์ ์ญ ์ ์ผ๋ก ํ๊ฐํ ๋๋ ์๋ํฉ๋๋ค. namespaces
์ ๊ด๋ จ์ด ์์ต๋๋ค.
๋ณธ์ง์ ์ผ๋ก import
๋๋ export
์๋ ํ์ผ์ด module
์ปดํ์ผ๋ฌ ์ต์
์์ ์ด๋ฏธ ์๊ณ ์์ด์ผํ๋๋ฐ ์ typescript๊ฐ ๋ชจ๋์ด ์๋๋ผ๊ณ ์ถ์ธก ํ๋๊ฐ? ์๋ฅผ ๋ค์ด Typescript ์์ฒด๋ module
์ค์ ํ์ง ์๊ณ ์ปดํ์ผ๋๋ฏ๋ก ๊ธฐ๋ณธ none
๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์ปดํ์ผ๋ฌ๋ ์ฐ๊ฒฐ / ์ ์ญ ํ๊ฐ๋ฅผ ๊ฐ์ ํ ์ ์์ต๋๋ค.
--module <something>
๋ฅผ ์ฌ์ฉํ๊ณ ๋ค๋ฅธ ํ์ผ์์ ๊ฐ์ ธ ์ค์ง ์์ ์ ์ธ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ (๋ค์ ์คํ์ด์ค ์์ฒด ํฌํจ) typescript๋ ์ด๋ฏธ --isolatedModules
์ด์ ์ "์ ์๋์ง ์์"์ผ๋ก ์คํจํ๊ณ export {}
์ดํ์๋ ๋์ผํฉ๋๋ค.
๋๋ ์ด๋ค ์ด์ ๋ก import
/ export
๋ฅผ --module none --isolatedModules
์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ์์ ์ฑ๋๋ฐ, ์ด๊ฒ์ ๋ค์ ํผ๋์ค๋ฝ๊ณ ๋ฒ๊ทธ ์ผ ์ ์์ต๋๊น?
์ต์ข ์ฌ์ฉ์๋ก์ @DanielRosenwasser : "์ ์ญ ํ์ผ"์ ๋ฌด์์ ์๋ฏธํฉ๋๊น? ๊ทธ๋๋ ์๋ด๊ฐ ๋ง์์ ๋ญ๋๋ค. ์๋ง๋ "import ๋๋ export ๋ฌธ์ด์๋ ํ์ผ์ ๋ชจ๋์ด ์๋๋ฉฐ '--isolatedModules'๋ก ์ปดํ์ผ ํ ์ ์์ต๋๋ค.์ด ํ์ผ์ด ๋ถ์์ฉ์ ๋ํด์๋ง ํ๊ฐ๋๋ ๊ฒฝ์ฐ 'export {}'๋ฌธ์ ์ถ๊ฐํ์ญ์์ค." -์ธ์ด๊ฐ ์ค๋ฅ ๋ฉ์์ง์ฒ๋ผ ๋ณด์ด์ง๋ ์์ง๋ง.
๊ฐ๋จํ js ํ๋ก์ ํธ์ ๋ํด ๋์ผํ ์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค. ๋ฐฉ๊ธ ๋ง๋ ์ํ js ํ๋ก์ ํธ๋ ํจํค์ง ๋ฐ ์คํฌ๋ฆฝํธ ํ์ผ ๋ด์ฉ์ ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์์ต๋๊น?
Package.json
{
"plnkr": {
"๋ฐํ์": "์์คํ
"
}
}
lib / script.js
//
//๊ณค๋ด
// Dheeraj Kumar ์ ์
//
let card1 = "์คํ์ด๋ ์์ด์ค",
card2 = "ํํธ 10 ๊ฐ";
console.log ( '๋ธ๋ ์ญ์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค!');
console.log ( "๋น์ ์ ์ฒ๋ฆฌ๋ฉ๋๋ค :");
conosle.log ( ""+ card1);
console.log ( ""+ card2);
์ด๊ฒ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
๋๋ ์ข ์ข ์์ ํ ์คํธ๋ฅผ ํตํด ์ด๊ฒ์ํ๋ค.
describe('jest', () => {
it('finds this test', () => {
expect(true).toBeTruthy();
});
it('parses this typescript', () => {
const actual: number = 0;
const expected: number = 0;
expect(actual).toEqual(expected);
});
});
export {
// Use an empty export to please Babel's single file emit.
// https://github.com/Microsoft/TypeScript/issues/15230
}
๋๋ ์ ๋ง TypeScript๊ฐ import / export ๋ฌธ์ ํฌํจํ๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ๋ชจ๋ .ts ํ์ผ์ ES6 ๋ชจ๋๋ก ๊ฐ์ฃผํ๋๋กํ๋ ์ต์
์ ์ํฉ๋๋ค. ์๋ --isolatedModules
์ต์
์ด ํด๋น ์ต์
์ด๋ผ๊ณ ๊ฐ์ ํ์ง๋ง ๊ฐ์ ธ ์ค๊ธฐ / ๋ด๋ณด๋ด๊ธฐ๊ฐ์๋ ํ์ผ์์ ๋งค์ฐ ํผ๋์ค๋ฌ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. (๋๋ ์ฌ์ ํ ๋ค์ ์คํ์ด์ค์ ์ํด ์ค๋ฅ ๋ฉ์์ง๊ฐ ์๋ฏธํ๋ ๋ฐ๋ฅผ ์ดํดํ์ง ๋ชปํฉ๋๋ค. ํด๋น ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ณ ์๋ ๊ฒ ๊ฐ์ง ์์ต๋๋ค.)์ด ์ค์ ์ ์ํ๋ ์ด์ ๋ ์ค์๋ก ์ฐธ์กฐํ๊ธฐ ๋๋ฌธ์ TypeScript์์ ๋ช ๊ฐ์ง ๋ฌธ์ ๋ฅผ ํฌ์ฐฉํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์
๋๋ค. ํ์ผ์ด ์๋ก๋ฅผ ์ฐธ์กฐ ํ ์์๋ node / parcel / webpack์ ์ฌ์ฉ ํจ์๋ ๋ถ๊ตฌํ๊ณ ํ .ts ํ์ผ์ ์ต์์ ๋ณ์ (๋ ๋ค ๊ฐ์ ธ ์ค๊ธฐ / ๋ด๋ณด๋ด๊ธฐ ๋ฌธ์ด ์์์ผ๋ฏ๋ก TypeScript๊ฐ์ด๋ฅผ ES6 ๋ชจ๋๋ก ์ทจ๊ธํ์ง ์์) ๋ด ๋ณด๋ด์ง ์์ ๋ณ์.
๋๋ ์ผ์ข ์ ๊ด๋ จ ์ฑ๊ฐ์ฌ์ ๊ณ ์น๋ ค๊ณ ์ฌ๊ธฐ์ ์ฐ๋ค. ์๋ ์ค๋ช ์ create-react-app ๋ฐ TypeScript๋ก์ด ์ค๋ฅ์ ๋ํด ๊ฒ์ํ๋ ๋ค๋ฅธ VS Code ์ฌ์ฉ์๋ฅผ ๋๊ธฐ์ํ ๊ฒ์ ๋๋ค.
create-react-app 2.x ๋ฐ TypeScript ๋ก ํ๋ก์ ๋ฅผ setupProxy.js
๋ผ๋ ํ์ผ์ ์ถ๊ฐํฉ๋๋ค.
const proxy = require('http-proxy-middleware');
module.exports = function(app) { /* ... */ };
react-scripts
๋ ts ๋ณํ ํ๋ก์ธ์ค ์ธ๋ถ์์์ด ํ์ผ์ ์ฝ์ผ๋ฏ๋ก ์ผ๋ฐ js ์ฌ์ผํฉ๋๋ค.
์ด๊ฒ์ ๋ฌธ์ํ ๋๋๋ก ์ ํํ๊ฒ ์๋ ํ์ง๋ง ์ฑ๊ฐ์ ๋ถ์์ฉ์ด ์์ต๋๋ค.
tsconfig.json
์์ฑ ๋ react-scripts
์๋ src
๋ฅผ ํฌํจํ์ฌ setupProxy.js
src
๋ชจ๋ ํ์ผ์ด ํฌํจ๋ฉ๋๋ค. ๊ทธ ๊ฒฐ๊ณผ, ๋ณด์ฌ VS ์ฝ๋๋ฅผ ํธ๋ฆฌ๊ฑฐ Cannot compile namespaces...
์ค๋ฅ setupProxy.js
๋นจ๊ฐ์ SQUIGGLE์ ์ฝ๋๋ฅผ ํ์ํ๊ณ ๋ฌธ์ ์ฐฝ์ ํฌํจ. ๋ด ์ค์ ์์ ํ์ผ๊ณผ ๋ชจ๋ ์์ ํด๋๊ฐ ๋นจ๊ฐ์์ผ๋ก ๊ฐ์กฐ ํ์๋ฉ๋๋ค.
ํด๊ฒฐ์ฑ
: tsconfig.json์์ setupProxy.js
ํ์ผ์ ์ ์ธํ์ฌ VS Code ์ค๋ฅ ๋ฉ์์ง๋ฅผ ํ์ํ์ง ์์ต๋๋ค.
{
// ...
"exclude": ["src/setupProxy.js"]
}
react-scripts
๋ isolatedModules: true
react-scripts
๊ฐ์ ํ์ง๋ง exclude
์ ๋ฎ์ด ์ฐ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋์ : `setupProxy.js์ ๋ช ๋ช ๋ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
export const _ = '';
์ต์์ ์์ค ๋ด๋ณด๋ด๊ธฐ์์๋ ์ด์ --isolatedModules์ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
copliation์ ํฌํจ๋์ง ์์์ผํ๋ ํ์ผ (gulp.js ๋ฑ)์ด ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๋์ด ๋ฉ์์ง๋ฅผ ์์ฃผ๋ฐ์ต๋๋ค.
์ฃผ์-create-react-app์ ์ฌ์ฉ ์ค์ด๊ณ ์ด ๋ฌธ์ ๊ฐ ์ ์ฒ๋ผ ๋ณด์ด๋ฉด ... ๋ด tsconfig.json ํ์ผ์ ๋ณ๊ฒฝํ์ฌ์ด ๋ฌธ์ ๋ฅผ ์ฐํ ํ ์์์์ต๋๋ค ....
"isolatedModules": true,
...์
"isolatedModules": false,
@UncleFifi ๊ทธ๋ฐ ๋ค์ ์ค๋ฅ๊ฐ ์ ํ ๊ฒ์ฌ์์ ๋ฐ๋ฒจ ์ ํ ์คํฌ๋ฆฝํธ ๋ณํ์ผ๋ก ์ด๋ ํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๊ฒฝ๊ณ ๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
@jtbennett export {};
- export { name, localName as exportName };
์ ํด๋ณด ํ์์ผ๋ก ์๋ฌด๊ฒ๋ ๋ด๋ณด๋ผ ์ ์์ต๋๋ค.
@UncleFifi ๊ทธ๋ฐ ๋ค์ ์ค๋ฅ๊ฐ ์ ํ ๊ฒ์ฌ์์ ๋ฐ๋ฒจ ์ ํ ์คํฌ๋ฆฝํธ ๋ณํ์ผ๋ก ์ด๋ ํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๊ฒฝ๊ณ ๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
์ค์ ๋ก ๋ค์ ์คํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ง. ์ด ๋ฌธ์ ๋ ์ฃผ๋ก ๋ค์ ์คํ์ด์ค๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๊ฐ์ ธ ์ค๊ธฐ / ๋ด๋ณด๋ด๊ธฐ์ ํฉ๋ฒ์ ์ธ ํ์ผ์ด์์ ๋ ๋ค์ ์คํ์ด์ค์ ๋ํด ๋ถํํ๋์ด ์ค๋ฅ์ ๊ดํ ๊ฒ์ ๋๋ค.
์ค์ ๋ก ๋ค์ ์คํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ง. ์ด ๋ฌธ์ ๋ ์ฃผ๋ก ๋ค์ ์คํ์ด์ค๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๊ฐ์ ธ ์ค๊ธฐ / ๋ด๋ณด๋ด๊ธฐ์ ํฉ๋ฒ์ ์ธ ํ์ผ์ด์์ ๋ ๋ค์ ์คํ์ด์ค์ ๋ํด ๋ถํํ๋์ด ์ค๋ฅ์ ๊ดํ ๊ฒ์ ๋๋ค.
๋ง์์, ์ฃ์กํฉ๋๋ค.์ด ๊ธ์ ์ฝ์ ์ง ์ค๋๋์์ต๋๋ค! ์ฆ, ๊ทธ๋ค์ด CRA์์ --isolatedModules
๋ฅผ ์ค์ ํ ์ด์ ๋ ๋ฐ๋ฒจ ํ์ดํ ์คํฌ๋ฆฝํธ์ ํ๊ณ๋ฅผ ๊ฐ๊น๊ฒ ์๋ฎฌ๋ ์ดํธํ๊ธฐ ๋๋ฌธ์
๋๋ค (๋ฐ๋ฒจ๋ ๋จ์ผ ํ์ผ ํธ๋์ค ํ์ผ์ด๊ธฐ ๋๋ฌธ์). ๋ ์ผ.
๊ทธ๋ ๋ค๋ฉด ์ค๋ฅ Cannot compile namespaces when --isolatedModules flag is provided
์ ๋ํ ํ์ฌ ํด๊ฒฐ์ฑ
์ ํ์ผ ๋งจ ์์ export {};
๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์
๋๊น?
์, ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. (์ค์ ๋ก TypeScript namespace
์ฌ์ฉํ์ง ์๋๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ์๊ณ ์๋ง๋ ํฉ๋ฒ์ ์ธ ๋ฌธ์ ๊ฐ์์ ์ ์์ต๋๋ค.)
ํ์ผ์ด "๋น"ํ์ผ (์ฆ, ์ ์ฒด ํ์ผ์ด ์ฃผ์ ์ฒ๋ฆฌ๋จ) ๋๋ฌธ์์ด ๋ฉ์์ง๊ฐ ๋ํ๋ฉ๋๋ค. ๋๋ TS๊ฐ ์ด๊ฒ์ ํฌ์ฐฉํ์ฌ ๊ธฐ์์ง๋ง ์ค๋ฅ ๋ฉ์์ง๋ ๋งค์ฐ ๋ถํฌ๋ช ํ์ต๋๋ค (๋ฐ๋๋ผ CentOS 7 ์ค์น์์ ์์์ด ๊นจ์ก์ง๋ง ์ด๊ฒ์ ์๋ง๋ TS์ ์ง์ ๊ด๋ จ์ด์๋ webpack dev ์๋ฒ ๋๋ฌธ์ผ ๊ฒ์ ๋๋ค)
_ ํธ์ง : ์ฌํ ํ ์ ์์ต๋๋ค. ์ธ ๊ฐ์ ์ต์์ ๋ด๋ณด๋ด๊ธฐ๋ก๋ง ๊ตฌ์ฑ๋ ํ์ผ์ ํ์คํ ์ณ๋ค๋ณด๊ณ ์์๋๋ฐ์ด ์ค๋ฅ๊ฐ ์์๋๋ฐ๋ณ๋ก ์ด๋๊ฐ์์ ๋ญ๊ฐ ์๋ชปํ์ต๋๋ค ._
์ด ์ค๋ฅ๋ ์ต์์ ์์ค ๋ด๋ณด๋ด๊ธฐ๊ฐ์๋ ํ์ผ์์ ๋ฐฉ๊ธ ๋ฐ์ํ์ต๋๋ค .
// Cannot compile namespaces:
export const foo = 'foo';
// Compiles fine
const foo = 'foo';
export { foo };
@ denis-sokolov ๋ถ๋ช ํ ์ง๋ฌธ : ํด๋น ํ์ผ์ ๋ค์ ์คํ์ด์ค์ ๊ฐ์ ๋ค๋ฅธ ํญ๋ชฉ๋ ์์ต๋๊น?
๋ง ๊ทธ๋๋ก export const
์ด๋ผ๋ฉด ๋ ๋ฒ์งธ ์ถ์ธก์ typescript๊ฐ ts-loader๋ฅผ ์ฌ์ฉํ๋ webpack๊ณผ ๊ฐ์ ๊ฒ์์ ์ฌ์ฉ๋๊ณ ์์ผ๋ฉฐ export
ํ์ฅํ๋ ์ด์ ํจ์ค (์ : babel-loader) ์ดํ์๋ง ์ฝํ
์ธ ๋ฅผ ๋ณด๋ ๊ฒ์
๋๋ค. ์ด๋ค ์ ์ผ๋ก๋
๋ ์ด์ ์ฌํ ํ ์ ์์ต๋๋ค. ์๋ชป๋ ๊ฒฝ๋ณด๋ก ์ธํด ์ฃ์กํฉ๋๋ค,
ํน์ ํ์ผ์์ ์์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋ค๋ฅธ ํ์ผ์ ์ ์์ ์ผ๋ก ์๋ํฉ๋๋ค.
CRA TypeScript๋ฅผ ์ฌ์ฉํ๊ณ @types
์ด์๋ ํจํค์ง๋ฅผ ๊ฐ์ ธ ์ค๋ ์ํฉ์ ์์ต๋๋ค. ๊ณ ์ ํ ์ ํ์ ์ ๊ณตํ๊ธฐ ์ํด declare module 'package'
์ ์ถ๊ฐํ๊ณ ์ถ์ง๋ง์ด ๋ช
๋ น๋ฌธ์ ๋ชจ๋ ํ์ผ์ ๋ฃ์ ์ ์์ต๋๋ค. ๊ทธ๋์ ๊ณ์ํด์ types.ts
๋ฅผ ๋ง๋ค์ด declare module
๋ฌธ์ ๊ฑฐ๊ธฐ์ ๋ฐฐ์นํฉ๋๋ค. ์ด์ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
isolatedModules
์ false
์ฌ์ ์ํ๋ฉด CRA๊ฐ ๋ฐ๋ก ๋ค์ ๋ณ๊ฒฝํฉ๋๋ค. ๊ทธ๊ฒ์ ํด๊ฒฐ์ฑ
์ด ์๋๋๋ค.
export {}
๋ฅผ ์ฌ์ฉํ์ฌ types.ts
ํ์ผ์ declare module
ํ๋ฉด ๊ธฐ๋ฅ ๋ณด๊ฐ์์ ์๋ชป๋ ๋ชจ๋ ์ด๋ฆ์ด ํ์๋ฉ๋๋ค. ๋์ . ์ด ์ค๋ฅ๋ ๋ชจ๋์ด ์๋ ํ์ผ์ ์ ์ธ์ ๋ฃ์ด ํผํ ์ ์์ง๋ง,์ด ๊ฐ์ isolatedModules
์ค์ ์ ํตํด CRA๋ ๋ชจ๋ ํ์ผ์ ๋ชจ๋๋ก ๋ง๋ญ๋๋ค!
๋ฐ๋ผ์ ํ๋์ ์ค๋ฅ๋ฅผ ํด๊ฒฐํ๋ ์ํ ๊ฒฝ๋ก๊ฐ ๋ค๋ฅธ ์ค๋ฅ์ ๋๋ฌํ๋ค๊ฐ ๋ค์ ๋์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์์ต๋๊น?
์ถ์ธก์ @Bnaya , ์๋ํ๋ ํ์ผ์ ๊ฐ์ ธ ์ค๊ธฐ ๋๋ ๋ด๋ณด๋ด๊ธฐ ๋ฌธ์ ์ฌ์ฉํ๊ณ ์์ต๋๊น? ์ฝ๋์์ require()/module.exports
๋ฐ import/export
์ค ํ๋๋ง ์ฌ์ฉํ์ธ์. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ชจ๋ ํ์ผ์ด tsconfig include์ ํฌํจ๋๋์ง ํ์ธํ์ญ์์ค (๊ทธ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ฌธ์๋ฅผ ํ์ธํ์ญ์์ค.
@TomasHubelbauer ๋ชจ๋ ์ ์ธ์ ๋ฌด์๋ณด๋ค๋ ์ด๋ฌํ ์ด์ ๋ก .d.ts์ ์์ด์ผํฉ๋๋ค.
CRA์์ ์ ๊ฑฐํ ์ค์ ๋ง ๋ค์ ์ถ๊ฐํ๊ณ ๋ค์ ๋ณ๊ฒฝํ์ง๋ ์์์ง๋ง isolatedModules์ ๋ํด ๋ ์ผ๊ด์ฑ์ด์์ ์ ์์ต๋๊น?
@simonbuchan ๋๋ .d.ts
์๋ํ์ง๋ง ์ ์๊ฒ๋ ํจ๊ณผ๊ฐ ์์์ต๋๋ค. ์ ํํ ๋ฌด์์ธ์ง ํ์คํ์ง ์์ ์ด์ ๋ฅผ ๋ค์๋ณด๊ณ ํ ๊ฒ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค์ ๋ก CRA๋ ์ ๋ฅผ ์ํด ๊ทธ ์ค์ ์ ๋ค์ ์์ฑํ์ต๋๋ค.
@simonbuchan ๋๋ ์ ์ ์ ์์ ๋ชจ๋ ๊ฒ์ ์๋ํ์ต๋๋ค-์๋ฌด ์์ฉ์ด ์์ต๋๋ค :(
@simonbuchan ํ ์ข์์. .d.ts
์๋ํฉ๋๋ค. ๋ชจ๋์ ์ ์ธํ๊ณ ์
๋ ฅ ํ ์ ์์ต๋๋ค. ๋ด๊ฐ ์๋ ํฌ๊ธฐํ ์ด์ ๋ ํด๋น ๋ชจ๋์์ ์ ์ธํ๋ ค๋ ์
๋ ฅ์ ๋ํด ๋ค๋ฅธ ์
๋ ฅ์ ์ฐธ์กฐํด์ผํ์ง๋ง .d.ts
ํ์ผ์ import
๋ฅผ ๋์
ํ๋ฉด ์๋์ด ์ค์ง๋๊ธฐ ๋๋ฌธ์
๋๋ค. ๋๋ ์ด๊ฒ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด์ง๋ง ๋ ์ด์์ด ์ค๋ฅ์ ๊ด๋ จ์ด์๋ TypeScript ์ง์์ด ๋ถ์กฑํฉ๋๋ค.
๋ค์์ typescript @ next (https://github.com/yang/sandbox-ts-namespaces-error์ ์ ์ฒด ์ ์ฅ์)๋ฅผ ์ฌ์ฉํ๋ ์ต์ ์ฌํ ์ฌ๋ก์ ๋๋ค.
src / a.js : (์๋ฆผ, ๊ฐ์ ธ ์ค๊ธฐ / ๋ด๋ณด๋ด๊ธฐ ํค์๋๊ฐ ํ์ํ์ง ์์)
module.exports = "hello"; // you could really put anything here, e.g. console.log('hello');
tsconfig.js :
{
"compilerOptions": {
"allowJs": true,
"isolatedModules": true,
"noEmit": true,
"strict": true
},
"include": ["src"]
}
์ค๋ฅ:
$ ./node_modules/.bin/tsc
src/a.js:1:1 - error TS1208: Cannot compile namespaces when the '--isolatedModules' flag is provided.
1 module.exports = "hello";
~~~~~~
Found 1 error.
์ ๋ ์ฒ์์ create-react-app --typescript
ํตํด์ด ๋ฌธ์ ๋ฅผ ๋ง๋ฌ๋๋ฐ, ์ด๋ setupProxy.js (๋๋ setupTests.js)๋ฅผ ์์ฑํ๋๋ก ์ง์ํฉ๋๋ค. CRA๋ ๋ํ isolatedModules
๋ฐ allowJs
๋ฅผ true๋ก ์ค์ ํฉ๋๋ค. ์ต์ typescript ๋ฒ์ ์ด ๋์ฌ ๋๊น์ง๋ ๋ฌธ์ ๊ฐ๋์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค (3.2.x ๋๋ 3.3.x๋ก ์
๋ฐ์ดํธ ํ ํ์ ๋ง โโtypescript 3.1.x์์ setupProxy.js์ ๋ํ ์ค๋ฅ๊ฐ ํ์๋์ง ์์์ต๋๋ค).
์ ์ธ ์ธํธ์ .js ํ์ผ์ ์ถ๊ฐํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ tsc๋ฅผ ์คํํ ๋ ์๋ํ์ง๋ง ์ฑ๊ฐ ์๊ฒ๋ TS ์ธ์ด ์๋น์ค (VS Code ๋ฐ Webstorm ๋ชจ๋ ์๋)์ ํธ์ง๊ธฐ์์ ํด๋น ํ์ผ์ ์ค๋ฅ๊ฐ ๊ณ์ ํ์๋ฉ๋๋ค. (์ด๊ฒ์ ์ ์ธ๋ฅผ ์กด์คํ์ง ์๋ TS ์ธ์ด ์๋น์ค์ ๋ํ ๋ณ๋์ ์ผ๋ฐ์ ์ธ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ธฐ์กด ๋ฌธ์ ๋ฅผ ์ฐพ์ ์ ์์์ต๋๋ค.) ํธ์ง๊ธฐ์์์ด ์ค๋ฅ๋ฅผ ๊ฐ๋ฆฌ๊ธฐ ์ํด .d.ts ํ์ผ์ ์ถ๊ฐํ์ต๋๋ค. * .js ํ์ผ์ ๊ฒฝ์ฐ.
๋ํ .js ํ์ผ์ ์๊ตฌํ๊ฑฐ๋ ๊ฐ์ ธ ์ค๋ฉด ์ ์ธ๊ฐ ๋นํจ์จ์ ์ผ๋ก ๋ ๋๋ง๋์ด ํธ์ง๊ธฐ ์ธ๋ถ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
allowJs (create-react-app์ด ์ ์ํ๋ ๊ฒ๊ณผ ๋ฐ๋) ๋ง ๋นํ์ฑํํ๋ ๊ฒ์ด ์ ์๊ฒ ํจ๊ณผ์ ์ ๋๋ค.
์น ์์ ์์๊ฒ์ด ์ค๋ฅ๊ฐ ๊ณ์ ๋ฐ์ํฉ๋๋ค.
๊ฐ๋ณ ํ์ผ ๋๋ ํด๋๋ฅผ ์ ์ธํ๋ ค๊ณ ํ์ง๋ง ์๋ํ์ง ์์ต๋๋ค.
์ด isolatedModules ์ค์ ์ ์ฌ์ ์ ํ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? CRA๋ tsconfig.json์ ๊ณ์ ๋ค์ ์์ฑํฉ๋๋ค.
๋ค๋ฅธ ์ ์์ด ์์ต๋๊น?
@jamespfarrell ํ์ผ์ export {};
๋ฃ์ผ์ญ์์ค.
@Macil ๊ทํ์ ์กฐ์ธ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ฐ์ ธ ์ค๊ธฐ ์๋ ์ค๋ฅ : './workers/HeartBeat.worker.js'์ ๊ธฐ๋ณธ ๋ด๋ณด๋ด๊ธฐ๊ฐ ์์ต๋๋ค ( 'HeartBeatWorker'๋ก ๊ฐ์ ธ์ด).
์ถ๊ฐํ๋ฉด :
export default {};
๋๋ ์ป๋ค:
์กํ์ง ์์ TypeError : _workers_HeartBeat_worker_js__WEBPACK_IMPORTED_MODULE_2 __. default๋ ์์ฑ์๊ฐ ์๋๋๋ค.
๋ชจ๋ ํ์ผ์ ๋ํด์๋ ํ๋์ ํ์ผ์ด ์๋๋ผ๋ฉด์ด 'isolatedModules'๋ฅผ ์ฐํํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์ง๊ธ ๋ฐ์ํ๋ ์ค๋ฅ๋ isolatedModules ์ค์ ๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค. isolatedModules๋ฅผ ๋๋๋ผ๋ ์ฌ์ ํ ์ด๋ฌํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ฐ์ ธ ์ค๊ธฐ ์๋ ์ค๋ฅ : './workers/HeartBeat.worker.js'์ ๊ธฐ๋ณธ ๋ด๋ณด๋ด๊ธฐ๊ฐ ์์ต๋๋ค ( 'HeartBeatWorker'๋ก ๊ฐ์ ธ์ด).
์ด ์ค๋ฅ๋ ์ด๋์์ ๋ฐ์ํฉ๋๊น? import Foo from './workers/HeartBeat.worker.js';
์ ๊ฐ์ด ํ์ผ์ด์๋ ํ์ผ์ ๊ธฐ๋ณธ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ๊ฐ์ ธ ์ค๋ ค๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ธฐ๋ณธ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ๊ฐ์ ธ ์ค์ง ์์ผ๋ ค๋ฉด ๊ฐ์ ธ ์ค๊ธฐ ํ์ import './workers/HeartBeat.worker.js';
๋ก ๋ณ๊ฒฝํ์ญ์์ค.
๋น์ ๋ง์ด ๋ง์์ .
_ ๋ค๋ฅธ ์ฌ๋์ด ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช์ ์ ์์ต๋๋ค ._ ์ฝํ ์ธ ๊ฐ์๋ ์๋ฆฌ ํ์ ์๋ก ๋จ๊ฒจ๋ ๋ช ๊ฐ์ ํ์ผ์ ๋ํด ๋์ผํ ์ค๋ฅ๊ฐ ํ์๋์์ง๋ง ๋ค๋ฅธ ํ์ผ๋ก ๊ฐ์ ธ ์์ต๋๋ค. ๋ค๋ฅธ ๊ตฌ์ฑ ์์ ํ์ผ์์ ๊ฐ์ ธ์จ ๋น styles.js ํ์ผ์ด ์์ต๋๋ค.
๊ทธ๋ฅ ์ถ๊ฐ
๋ค๋ฅธ ์ฌ๋์ด ํน์ ์ค์๋ฅผํ๋ ๊ฒฝ์ฐ ์ค์๋ก .d.ts
๋์ .ts
์ ๋ฏธ์ฌ๋ฅผ ๋ถ์ธ ๋ชจ๋ ์ ์์ ๋ํด์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์์ ํ ์๋ฒ๋ฅผ ๋ค์ ์์ํด์ผํฉ๋๋ค.
๊ฐ์ ์ค๋ฅ. CRA๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
CRA์์์ด ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค. ํ์ผ์์ ๋ฌด์์ด๋ ๋ด๋ณด๋ด๋ ๊ฒ์ ์์์ต๋๋ค.
๊ทธ๋์ ๋ด ํ๋ก์ ํธ์ ๋ฃจํธ ํด๋์ .js
ํ์ผ์ด ์์๊ธฐ ๋๋ฌธ์์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. tsconfig.json ํ์ผ์์ ๋ค์์ ๊ตฌ์ฑํ์ต๋๋ค.
"compilerOptions": {
....
},
"include": ["src"],
๋๋ ์ด๊ฒ์ ์ํด ๊ทธ๊ฒ์ ์ ํํด์ผํ๋ค.
"compilerOptions": {
....
},
"include": ["src/*"],
๊ทธ๊ฒ ๊ณ ์ณ์ก์ง๋ง ์ ๊ทธ๋ฐ์ง ์ดํด๊ฐ ์๋๋๋ฐ ๋๊ตฐ๊ฐ ๋์๊ฒ ์ค๋ช
ํ ์ ์์ต๋๊น? ๋ด ์ดํด๋ src
๋ฅผ ํฌํจํ๋ฉด ๋ฃจํธ ํ์ผ๊ณผ ํ์ ํด๋๊ฐ ์ ๊ฑฐ๋๋ค๋ ๊ฒ์
๋๋ค.
@thitemple ์ด๋๊ฐ์ ๊ธฐ์ฌ์์ / * ์ค ๋ํซ์
@ vort3xxx ๋๋ํ์ง ์์๋ค. @DaviSpindola์์์ด ๊ฒ์๋ฌผ https://github.com/microsoft/TypeScript/issues/15230#issuecomment -479730947์ ๋ณด๊ณ ์๋ํ์ต๋๋ค. ๊ทธ๊ฑฐ์๋ค
@ vort3xxx ๋๋ํ์ง ์์๋ค. @DaviSpindola ์์ด ๊ฒ์๋ฌผ ๋ณด๊ณ ์๋ํ์ต๋๋ค. ๊ทธ๊ฑฐ์๋ค
๊ฐ์ ๋ฌธ์ , ๊ฐ์ ํด๊ฒฐ์ฑ . TS 3.5.2.
๋ฟก ๋นต๋จ
@simonbuchan ๋๋
.d.ts
์๋ํ์ง๋ง ์ ์๊ฒ๋ ํจ๊ณผ๊ฐ ์์์ต๋๋ค. ์ ํํ ๋ฌด์์ธ์ง ํ์คํ์ง ์์ ์ด์ ๋ฅผ ๋ค์๋ณด๊ณ ํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค์ ๋ก CRA๋ ์ ๋ฅผ ์ํด ๊ทธ ์ค์ ์ ๋ค์ ์์ฑํ์ต๋๋ค.
๋๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์์ ๋์ต๋๊น? create react ์ฑ ๋ด์์ .ts
๋๋ .d.ts
์ ์ธ ํ์ผ์ ์ ์ํ๋ฉด All files must be modules when the '--isolatedModules
ํ๋๊ทธ๊ฐ ์ ๊ณต๋๋ ์ค๋ฅ๊ฐ ๋ฐํ๋ฉ๋๋ค. ์ ํ๋๊ทธ๋ฅผ ์ค์ false
๋๋ ์ ๊ฑฐ isolatedModules
์ ์ ์ผ๋ก์ผ๋ก ๋ค์ ์์ฑ์ true
์์ํ ๋ํ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ฐ์ ๋ง๋ญ๋๋ค.
์ถ๊ฐ export {}
์ค๋ฅ์ ์ ์ธ ํ์ผ ๊ฒฐ๊ณผ์ ๋งจ ์๋์ : Invalid module name in augmentation. Module '...' resolves to an untyped module at '...'
.
๋๊ตฐ๊ฐ ๋์์ฃผ์ธ์. Create React App ํ๋ก์ ํธ์ ์ฌ์ฉ์ ์ ์ ์ ์ธ ํ์ผ์ ์ด๋ป๊ฒ ์ถ๊ฐํฉ๋๊น?
๋ค๋ฅธ ์ฌ๋์ด ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์๋์ง ํ์ธํ์ต๋๋ค. create react ์ฑ์ ์ฌ์ฉํ ๋ ์์ค ํด๋์ react-app-env.d.ts
ํ์ผ์ ์ ์ธ ์ ํ์ ์ถ๊ฐํ๊ธฐ ๋งํ๋ฉด๋ฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
A global file cannot be compiled using '--isolatedModules'. Ensure your file contains imports, exports, or an 'export {}' statement.