Typescript: Visual Studio "์ปดํŒŒ์ผ ์—†์Œ"์˜ต์…˜

์— ๋งŒ๋“  2015๋…„ 03์›” 11์ผ  ยท  29์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: microsoft/TypeScript

์•ˆ๋…•ํ•˜์„ธ์š”,

์ตœ๊ทผ์— src: ๋ฐ ๊ธฐํƒ€ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ž…๋ ฅ TS ํŒŒ์ผ ๊ฒฝ๋กœ ๋ฐ TS ๊ตฌ์„ฑ ์ •๋ณด์— ๋Œ€ํ•ด Visual Studio ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜์žˆ๋Š” grunt-ts ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ๊ฐœ์„  ์‚ฌํ•ญ์„ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. https://github.com/TypeStrong/grunt-ts/pull/215

Task Runner Explorer์™€ ํ•จ๊ป˜ Grunt-ts๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ Visual Studio TypeScript ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ๊ตฌ์„ฑ UI (์˜ˆ : preserveConstEnums)์—์„œ ์•„์ง ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Task Runner Explorer ์‚ฌ์šฉ์— ๋Œ€ํ•œ ํ•œ ๊ฐ€์ง€ ์‚ฌํ•ญ์€ ํŠน์ • Visual Studio ์ด๋ฒคํŠธ์—๋งŒ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ์ค‘์—๋Š” "๋นŒ๋“œ ํ›„"์™€ "๋นŒ๋“œ ์ „"์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ํ›„์—๋Š” ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ•˜์ง€๋งŒ VS๊ฐ€ TypeScript์˜ ์ž์ฒด ์ปดํŒŒ์ผ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ ํ•œ ํ›„ grunt-ts๊ฐ€ tsc๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ด์ƒํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์„ฑ๋Šฅ์„ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ฌธ์ œ๊ฐ€๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค (VS๊ฐ€ ์ปดํŒŒ์ผํ•˜๊ณ  ๋ฐฉ์ถœํ•˜๋Š” ์ž‘์—…์€ ๋‚ญ๋น„์ด๋ฉฐ ๊ฐœ๋ฐœ์ž๋Š” ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋” ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ ค์•ผํ•ฉ๋‹ˆ๋‹ค).

TypeScript ์šฉ Visual Studio์—์„œ ์ปดํŒŒ์ผ / ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ _only_ ๋„๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ด ๋ฌด์—‡์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค (์–ธ์–ด ์„œ๋น„์Šค / ๊ตฌ๋ฌธ ๊ฐ•์กฐ ํ‘œ์‹œ, ์˜ค๋ฅ˜ ๋ชฉ๋ก, C # ๋˜๋Š” VB ๋นŒ๋“œ ๋“ฑ). ์ง€๊ธˆ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ๊ทธ๋Ÿด ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌ!

Question

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

์ฐธ๊ณ ๋กœ VS2015 RTM์—๋Š” TypeScriptCompile์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋” ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked> ๋ฅผ .csproj ์— ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค (์˜ˆ : ์ฒซ ๋ฒˆ์งธ <PropertyGroup> .

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

์•ˆ๋…•ํ•˜์„ธ์š”, ๋ถˆ๊ณผ ๋ฉฐ์น  ์ „์— ์ด์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ # 2252๋ฅผ ์ œ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ผ ํŒŒ์ผ ์ถœ๋ ฅ์ด์žˆ๋Š” TS ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ์ €์žฅ์‹œ ์ปดํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ๋•Œ ์‚ฌ์ „ ๋ฐ ์‚ฌํ›„ ๋นŒ๋“œ ์ด๋ฒคํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค (์ผ๋ฐ˜์ ์ธ VS "Build"๋ฐ "Rebuild"๋ช…๋ น, ์–ธ์–ด ์„œ๋น„์Šค, ๋””๋ฒ„๊น… ๋“ฑ์„ ๊ณ„์† ์œ ์ง€ํ•˜๋ฉด์„œ) .). ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ํ˜„์žฌ grunt-contrib-watch ( "Solution Open"๋ฐ”์ธ๋”ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์ž‘๋จ)์™€ ํ•จ๊ป˜ Task Runner Explorer๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผ ๋œ ํŒŒ์ผ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ™•์ธํ•˜๊ณ  ์ˆ˜์ • ๋  ๋•Œ๋งˆ๋‹ค ์ถ”๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ •๋ง๋กœ ๋งŒ์กฑ์Šค๋Ÿฝ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•˜๊ณ  (์‚ฌ์ „ ์ปดํŒŒ์ผ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•˜๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ Grunt๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋ชจ๋‘๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค) ์„ค๋ช… ๋œ ๊ฒƒ์„ ์ •ํ™•ํžˆ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค .VS ์ปดํŒŒ์ผ์„ ์™„์ „ํžˆ ๋„์‹ญ์‹œ์˜ค. ๊ทธ๋ฆฌ๊ณ  grunt-contrib-watch, grunt-ts, ์ถ”๊ฐ€ grunt ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฐ Task Runner Explorer์˜ ์กฐํ•ฉ์œผ๋กœ ์ปค์Šคํ…€ compile-on-save, ์ „์ฒด ๋นŒ๋“œ (์‹คํ–‰์ค‘์ธ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ํฌํ•จ), ์‚ฌ์ „ ๋ฐ ์‚ฌํ›„ ๋นŒ๋“œ ์ด๋ฒคํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. .

(์—…๋ฐ์ดํŠธ : ์ด๋ฏธ ๊ตฌํ˜„๋˜์—ˆ์œผ๋ฉฐ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ๋Š” TRE "Before Build"๋ฐ "After Build"๋ฐ”์ธ๋”ฉ์„ ์ง€์›ํ•˜์ง€ ์•Š์ง€๋งŒ .ts ํŒŒ์ผ์ด ์ˆ˜์ • ๋  ๋•Œ๋งˆ๋‹ค ์‚ฌ์šฉ์ž ์ง€์ • grunt ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์›์ธ).

์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ๋นŒ๋“œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ—ˆ์šฉํ•˜๋Š” ๊ฐ€์žฅ ์‰ฝ๊ณ  (TS ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ์ตœ์†Œํ•œ์˜ ๊ฐœ์ž…) ๋ฐฉ๋ฒ•์€ Visual Studio์—์„œ ์‹œ์ž‘๋œ ๋ชจ๋“  ํ˜•ํƒœ์˜ ์ปดํŒŒ์ผ์„ ํ•ด์ œํ•˜๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ €๋„ ๊ทธ๋ ‡๊ฒŒํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๋ฅผ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ ๋‹น์žฅ ๋‹น์‹ ์—๊ฒŒ ์ข‹์€ ์„ ํƒ์ด ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  .ts ํŒŒ์ผ์„ ์†์„ฑ์— Build Action: None ๋กœ ์„ค์ •ํ•˜๋ฉด ์›ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ค‘๊ฐ„ ํฌ๊ธฐ์˜ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ์ˆ˜๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ๋ฒˆ๊ฑฐ ๋กญ์Šต๋‹ˆ๋‹ค.

๋นŒ๋“œ๋Š” MSBuild ํ”„๋กœ์ ํŠธ์˜ ๋Œ€์ƒ์— ์˜ํ•ด ํŒŒ์ƒ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ typescript ๋นŒ๋“œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ํŒŒ์ผ์—์„œ typescript ๋Œ€์ƒ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‹น์‹ ์˜ ์–ธ์–ด ์„œ๋น„์Šค๊ฐ€ ํ•˜๋‚˜์˜ ์ปจํ…์ŠคํŠธ์—์„œ ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ์ˆ˜์ง‘ํ•˜์ง€ ์•Š๊ฒŒ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ดœ์ฐฎ๋‹ค๊ณ  ๋งํ•˜๊ณ  ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” tsconfig ์ง€์›์ด ์žˆ์–ด์•ผํ•˜๋ฉฐ ๊ทธ๋Ÿฌ๋ฉด ์ƒˆ ํ”„๋กœ์ ํŠธ๊ฐ€๋ฉ๋‹ˆ๋‹ค. tsconfig๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๊ณ„์† ์ž‘๋™ํ•˜๊ฒŒํ•˜๋ ค๋ฉด ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์— <TypeScriptEnabled>true</TypeScriptEnabled> ์†์„ฑ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

@mhegazy <TypeScriptEnabled>false</TypeScriptEnabled> ๋ฅผ) ์˜๋ฏธ ํ–ˆ์Šต๋‹ˆ๊นŒ?

๋‹น์‹ ์ด ์›ํ•˜๋Š” ๊ฒƒ์— ๋”ฐ๋ผ ์ž˜ :)

์–ธ์–ด ์„œ๋น„์Šค ํ”„๋กœ์ ํŠธ ์ฝ˜ํ…์ธ ๋กœ๋“œ๋ฅผ ๋„๋ ค๋ฉด false๋กœ ์„ค์ •ํ•˜๊ณ 
ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ์‚ฌ์‹ค๋กœ ๋งŒ๋“œ์‹ญ์‹œ์˜ค. ๊ธฐ๋ณธ ๋Œ€์ƒ (Microsoft.TypeScript.targets)์„ ํฌํ•จํ•˜์—ฌ ์ด๋ฏธ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ข‹์•„, ๋‚œ ์—‰๋ง์ด ๋ ๊ฒŒ. ๊ฐ์‚ฌ!

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @mhegazy , ๊ตฌ์„ฑ ์˜ต์…˜์ด ์ง€๊ธˆ๊นŒ์ง€ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค! (์—ฌ์ „ํžˆ ๊ตฌ๋ฌธ / ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๋ฅผ ํ‘œ์‹œํ•˜๊ณ  IE์—์„œ ๋””๋ฒ„๊น…์„ ํ—ˆ์šฉํ•˜๋Š” ๋™์•ˆ) ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํŠน์ • ์†”๋ฃจ์…˜ ๊ตฌ์„ฑ์— ๋Œ€ํ•ด ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค (๋‚ด๊ฐ€ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Œ).

<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
...
    <TypeScriptEnabled>false</TypeScriptEnabled>
...
</PropertyGroup>

"์–ธ์–ด ์„œ๋น„์Šค ํ”„๋กœ์ ํŠธ ์ฝ˜ํ…์ธ ๋กœ๋“œ ๋น„ํ™œ์„ฑํ™”"๊ฐ€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์ •ํ™•ํžˆ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. (๋Œ€์ƒ, ์ปจํ…์ŠคํŠธ ๋“ฑ๊ณผ ๊ฐ™์€ VS ๊ฐœ๋…์— ์ต์ˆ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.) ํ…Œ์ŠคํŠธ ํ•œ ํ•œ ๋ชจ๋“  ๊ฒƒ์ด์ด ์˜ต์…˜์œผ๋กœ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค (๋นŒ๋“œ์—์„œ ์ปดํŒŒ์ผํ•˜์ง€ ์•Š๋Š” ์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘ ์ œ์™ธ)? ๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ์—์„œ ์ƒˆ๋กœ ์ถ”๊ฐ€ / ์ƒ์„ฑ ๋œ .ts ํŒŒ์ผ์— ๋Œ€ํ•ด <TypeScriptCompile Include=".."/> ํ•ญ๋ชฉ์„ ๊ณ„์† ์ถ”๊ฐ€ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ, ์ด์ œ Grunt๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ์ž‘์—…์ด ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฏ€๋กœ ์–ด๋–ป๊ฒŒ ๋“  VS Build ํ˜ธ์ถœ์‹œ grunt-watch ํŠธ๋ฆฌ๊ฑฐ ๋นŒ๋“œ์™€ "Before Build"/ "After Build"๋ฐ”์ธ๋”ฉ ์ด๋ฒคํŠธ ๊ฐ„์˜ ์ถฉ๋Œ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์•ผํ•ฉ๋‹ˆ๋‹ค Rebuild ๋ช…๋ น์€ ๋นŒ๋“œ๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— VS๊ฐ€ ์ž๋™์œผ๋กœ ์ €์žฅํ•˜๋ฏ€๋กœ ๋‘ ๊ฐœ์˜ ๋‹ค๋ฅธ Grunt ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

<TypeScriptEnabled>false</TypeScriptEnabled> ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์—†์—ˆ์ง€๋งŒ (TypeScript 1.4๊ฐ€ ํฌํ•จ ๋œ VS 2013 ์—…๋ฐ์ดํŠธ 4) ํ”„๋กœ์ ํŠธ์—์„œ TypeScript ๋Œ€์ƒ ํŒŒ์ผ์„ ์ œ๊ฑฐํ•˜๋ฉด ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ์—์„œ ์ปดํŒŒ์ผ์ด ๋น„ํ™œ์„ฑํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ VS์—์„œ TypeScript ์ปดํŒŒ์ผ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ „์ฒด ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค (์—ฌ์ „ํžˆ ์–ธ์–ด ์„œ๋น„์Šค๊ฐ€ ์ž‘๋™ํ•˜๊ณ  ๋ฆฌํŒฉํ† ๋ง์„ ๊ณ„์† ํ–‰๋ณตํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๋“ฑ).

  • ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์—์„œ TypeScript ".targets"ํŒŒ์ผ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค.
  • Visual Studio TypeScript ์˜ต์…˜์—์„œ "ํ”„๋กœ์ ํŠธ์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ TypeScript ํŒŒ์ผ ์ž๋™ ์ปดํŒŒ์ผ"์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ์ผ์ข…์˜ ๋ฒ„๊ทธ์ž…๋‹ˆ๋‹ค (๋˜๋Š” ์ตœ์†Œํ•œ ๋Œ€ํ™” ์ƒ์ž์— ์—„๊ฒฉํ•˜๊ฒŒ ์ •ํ™•ํ•œ ๋ฐฉ์‹์œผ๋กœ ๋ ˆ์ด๋ธ”์ด ์ง€์ •๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค). TypeScript ํŒŒ์ผ์ด ํ”„๋กœ์ ํŠธ์˜ "์ผ๋ถ€"์ธ ๊ฒฝ์šฐ์—๋„ ๋Œ€์ƒ ํŒŒ์ผ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด Visual Studio 2013์€ ํ•ด๋‹น ํŒŒ์ผ์„ ํ”„๋กœ์ ํŠธ์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ๊ฒƒ์ฒ˜๋Ÿผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ €์žฅ์‹œ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค (์ „์—ญ ์˜ต์…˜์ด ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ). <TypeScriptEnabled/> ์„ (๋ฅผ) ์–ป์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @mhegazy- ์ด๊ฒƒ์ด TypeScript ์˜ต์…˜ ๋Œ€ํ™” ์ƒ์ž์˜ ์ผ๋ถ€์ผ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋ฉ‹์ง€ ๊ฒ ์ง€๋งŒ ์ ์–ด๋„ ํ”„๋กœ์ ํŠธ ํŽธ์ง‘์„ ํ†ตํ•ด ์ง€์›ํ•˜๋Š” ๊ฒƒ์€ ์ƒ๋‹นํžˆ ์‰ฝ์Šต๋‹ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ๊นŒ๋‹ค๋กœ์šด ์ ์€ <TypeScriptEnabled>false</TypeScriptEnabled> ๊ฐ€ ํŠนํžˆ ๋Œ€์ƒ์œผ๋กœ ๊ฐ€์ ธ์˜จ ํ›„์— ํŒŒ์ผ ๋์— ์žˆ์–ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€์ƒ์ด ์–ด์จŒ๋“  ์ •์˜ํ•˜๋ฏ€๋กœ ์žฌ์ •์˜ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ๊นŒ๋‹ค๋กœ์šด ๊ฒƒ์€๊ทธ๋ฆ‡๋œ ํŠนํžˆ ๋Œ€์ƒ์œผ๋กœ ๊ฐ€์ ธ์˜จ ํ›„ ํŒŒ์ผ์˜ ๋์— ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์ƒ์ด ์–ด์จŒ๋“  ์ •์˜ํ•˜๋ฏ€๋กœ ์žฌ์ •์˜ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‹น์‹  ๋ง์ด ๋งž์•„์š”! ์ด๊ฒƒ์ด ์†์ž„์ˆ˜์˜€์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, @mhegazy .

@mhegazy ์•ˆ๋…•ํ•˜์„ธ์š”. <TypeScriptEnabled>false</TypeScriptEnabled> ๊ฐ€ TypeScript 1.4๊ฐ€ ์„ค์น˜๋œ VS 2013์—์„œ ์ž‘๋™ํ•œ๋‹ค๊ณ  ํ™•์‹ ํ•˜์‹ญ๋‹ˆ๊นŒ? ๋ฐฉ๊ธˆ ํ˜„์žฌ PC๋ฅผ TS 1.3 (์ŠคํŠธ๋ ˆ์ดํŠธ VS 2013 ์—…๋ฐ์ดํŠธ 4)์„ ์‚ฌ์šฉํ•˜๋Š” VS 2013์—์„œ TS 1.4๋ฅผ ์‚ฌ์šฉํ•˜๋Š” VS 2013์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ์œผ๋ฉฐ ์ด์ œ Visual Studio๊ฐ€ "๋นŒ๋“œ์‹œ"TypeScript๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค ( "Build ๋‚ด ํ”„๋กœ์ ํŠธ์˜ ๋งˆ์ง€๋ง‰ 5 ์ค„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ง€๋งŒ : "์•ž์— ์žˆ์Šต๋‹ˆ๋‹ค.

  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />
  <PropertyGroup>
    <TypeScriptEnabled>false</TypeScriptEnabled>
  </PropertyGroup>
</Project>

์˜ค๋Š˜ ์ดˆ (์ด ํ‹ฐ์ผ“์„ ๋‹ซ์•˜์„ ๋•Œ)์ด ์ปดํ“จํ„ฐ์—์„œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ์ง€๋งŒ ์ด์ œ ์—ฌ๊ธฐ์— 1.4๋ฅผ ๋„ฃ์—ˆ์œผ๋ฏ€๋กœ Build from VS์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์ƒ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  (ํ”„๋กœ์ ํŠธ์—์—†๋Š” TypeScript์— ๋Œ€ํ•ด "์ €์žฅ์‹œ ์ปดํŒŒ์ผ"์„ ํ•ด์ œ) ์—ฌ์ „ํžˆ ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.

์ง‘์— 1.4๊ฐ€ ์žˆ๋Š”๋ฐ <TypeScriptEnabled>false</TypeScriptEnabled> ์„ (๋ฅผ) ์ „ํ˜€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.์ด ๋นŒ๋“œ ์˜ต์…˜์— ํšŒ๊ท€๊ฐ€ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

<TypeScriptEnabled>false</TypeScriptEnabled> ๋Š” ๋นŒ๋“œ์™€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ ์ผ๋ถ€๋กœ ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์–ธ์–ด ์„œ๋น„์Šค์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

F5์—์„œ ๋นŒ๋“œํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ๋Œ€์ƒ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค.

๊ทธ๊ฒƒ์ด ์งง์€ ๋Œ€๋‹ต์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๊ธด ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์€ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  1. ์ด๊ฒƒ์€ ์ผ๋ฐ˜์ ์ธ MSBuild ์ง€์›์œผ๋กœ, ๋Œ€์ƒ์ด ์ž‘์—…์„ ํ˜ธ์ถœํ•˜๊ณ  ์‹œ์Šคํ…œ์ด ์ž…๋ ฅ์„ ์ฐพ๊ณ  ์ผ์น˜ํ•˜๋Š” ๋Œ€์ƒ์„ ์ฐพ์•„ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๊ฒƒ์ดํ•˜๋Š” ์ผ์€ ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  TypeScriptCompile ํ•ญ๋ชฉ์„ ์ง‘๊ณ„ํ•˜๊ณ  ์ผ๋ถ€ ์˜ต์…˜๊ณผ ํ•จ๊ป˜ tsc.exe์— ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    ๋˜ํ•œ ํ”„๋กœ์ ํŠธ ์†์„ฑ ํŽ˜์ด์ง€๋Š” ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์—์„œ ํŒŒ์ƒ๋˜๋ฉฐ MSBuild ์†์„ฑ์— ๋Œ€ํ•œ UI ์ผ๋ฟ์ž…๋‹ˆ๋‹ค.
  2. ์–ธ์–ด ์„œ๋น„์Šค,์ด ์™„๋ฃŒ, ์„œ๋ช… ๋„์›€๋ง, VS์˜ ์˜ค๋ฅ˜, ์ €์žฅ์‹œ ์ปดํŒŒ์ผ ... ๋“ฑ. ์ผ๋ฐ˜ ๋นŒ๋“œ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋ฏ€๋กœ ๋นŒ๋“œ์— ๋Œ€ํ•ด ์ •์˜ํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ์†์„ฑ์„ ์กฐํšŒํ•˜๊ณ  LS ํ–‰๋™. ์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ( <TypeScriptTarget>ES3</TypeScriptTarget> )์—์„œ ๋Œ€์ƒ์ด ES3๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ ํด๋ž˜์Šค์—์„œ get / set์„ ์ •์˜ํ•˜๋ฉด ์–ธ์–ด ์„œ๋น„์Šค์—์„œ ๋นจ๊ฐ„์ƒ‰ ๋ฌผ๊ฒฐ ์„ ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
    ์ด๋ฅผ ํ†ตํ•ด ๋นŒ๋“œ ๋ฐ ๋””์ž์ธ ํƒ€์ž„ ๋™์ž‘ ๋ชจ๋‘์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ ์˜ต์…˜ ์ง‘ํ•ฉ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ์ด๋ฅผ ์œ„ํ•ด ๋Œ€์ƒ์€ <TypeScriptEnabled>true</TypeScriptEnabled> ์†์„ฑ์„ ์ •์˜ํ•˜์—ฌ typescript์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ์Œ์„ ์–ธ์–ด ์„œ๋น„์Šค์— ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

VS์—์„œ ๋นŒ๋“œ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋„๋กํ•˜๋ ค๋ฉด ๋Œ€์ƒ์„ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค. ์ด๋ ‡๊ฒŒํ•˜๋ฉด ๋นŒ๋“œ๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋˜์ง€๋งŒ LS์—์ด ํ”„๋กœ์ ํŠธ๊ฐ€ TypeScript ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹˜์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ชจ๋“  ํŒŒ์ผ์„ "๋Š์Šจํ•œ ํŒŒ์ผ"๋กœ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ดœ์ฐฎ๋‹ค๋ฉด ๋” ์ด์ƒ ์ž‘์—…์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์˜ ์†์„ฑ์„ ๊ณ„์† ์‚ฌ์šฉํ•˜๊ณ  ํ”„๋กœ์ ํŠธ์— ์—ด๋ ค์žˆ๋Š” ๋‹ค๋ฅธ ํŒŒ์ผ์„ ํฌํ•จํ•˜์ง€ ์•Š๋„๋กํ•˜๋ ค๋ฉด ํŒŒ์ผ์— <TypeScriptEnabled>true</TypeScriptEnabled> ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด LS๊ฐ€ ๊ทธ์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. .

๋นŒ๋“œ๊ฐ€ VS์—์„œ ์ž‘๋™ํ•˜๋„๋กํ•˜๊ณ  LS๊ฐ€์ด๋ฅผ ํ”„๋กœ์ ํŠธ๋กœ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋„๋กํ•˜๋ ค๋ฉด ํ”Œ๋ž˜๊ทธ๋ฅผ false๋กœ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค.

๊ฐ์‚ฌ. ์ด๊ฒƒ์€ ํ›Œ๋ฅญํ•œ ์ •๋ณด์ด๋ฉฐ ๋ชจ๋“  ๊ฒƒ์ด ๊ท€ํ•˜๊ฐ€ ์„ค๋ช…ํ•œ ๊ฒƒ๊ณผ ์ผ๊ด€๋˜๊ฒŒ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. .targets ํŒŒ์ผ์„ ์ œ๊ฑฐํ–ˆ์ง€๋งŒ TypeScriptEnabled ๋ฅผ true๋กœ ์„ค์ • ํ•œ ๊ฒฝ์šฐ TypeScript ๋นŒ๋“œ ํƒญ์ด ํ”„๋กœ์ ํŠธ ์†์„ฑ์—์„œ ์‚ฌ๋ผ์งˆ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๊นŒ?

  <!--
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />
  -->
  <PropertyGroup>
    <TypeScriptEnabled>true</TypeScriptEnabled>
  </PropertyGroup>
</Project>

๊ทธ๋ ‡๋‹ค๋ฉด ๋Œ€์ƒ์„ ๋‹ค์‹œ ํ™œ์„ฑํ™” ํ•œ ๋‹ค์Œ UI๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋Š” UI์—์„œ ์•ก์„ธ์Šค ํ•  ์ˆ˜์žˆ๋Š” ์„ค์ •์„ ์ œ์–ด ํ•  ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด์ƒํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค (๋˜๋Š” ๊ทธ ์‹œ์ ์—์„œ ์ง์ ‘ TS ํ”„๋กœ์ ํŠธ ์„ค์ •์„ ํŽธ์ง‘ํ•˜๊ธฐ ๋งŒํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์–ด์จŒ๋“  ๊ฑฐ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค).

๋‚ด๊ฐ€์ด ๋ชจ๋“  ๊ฒƒ์„ ๋ฌป๋Š” ์ด์œ ๋Š” ๋ช‡ ์ฃผ ์ „์— .csproj ๋ฐ .vbproj (https://www.npmjs.com/package/csproj2ts)์—์„œ TypeScript ๋นŒ๋“œ ์†์„ฑ์„ ์ฝ๊ธฐ ์œ„ํ•ด npm ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž‘์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ grunt-ts์— ํ†ตํ•ฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ค€๋น„๊ฐ€๋˜๋ฉด ".csproj ํŒŒ์ผ์— ๋Œ€ํ•ด tsc๋ฅผ ์‹คํ–‰"ํ•˜๋Š” ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค (์—ฌ๊ธฐ์—์„œ ์š”์ฒญํ•œ๋Œ€๋กœ : https://github.com/Microsoft/TypeScript/issues/1702). ์ฝ”๋”ฉ ๊ฒฝํ—˜์„ ์œ„ํ•ด VS TypeScript ์–ธ์–ด ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์„ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์•Œ๋ฆฌ๊ณ  ์‹ถ์ง€๋งŒ ๋นŒ๋“œ์—๋Š” grunt-ts๋ฅผ ์ „์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์‚ฌ๋žŒ๋“ค์ด UI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ TypeScript ์†์„ฑ์„ ๊ตฌ์„ฑ ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

TypeScript .targets ํŒŒ์ผ์ด ๋น„ํ™œ์„ฑํ™” ๋œ ์ƒํƒœ์—์„œ TypeScript ๋นŒ๋“œ ํƒญ์„ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๋˜ํ•œ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition=" '$(Configuration)' == 'Debug' " /> ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋”๋ผ๋„ TypeScript ๋นŒ๋“œ ํƒญ์ด ๋‚˜ํƒ€๋‚˜๋„๋กํ•˜๋ ค๋ฉด ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ์„ ๋””๋ฒ„๊ทธ๋กœ ์„ค์ • ํ•œ ๋‹ค์Œ ๋‹ค์‹œ๋กœ๋“œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค, @mhegazy- ๋‚˜๋Š” ๋‹น์‹ ์„ ํŠธ๋กค๋งํ•˜์ง€ ์•Š์„ ๊ฒƒ์„ ์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค!

TypeScript ๋นŒ๋“œ ํƒญ์ด ํ”„๋กœ์ ํŠธ ์†์„ฑ์—์„œ ์‚ฌ๋ผ์งˆ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๊นŒ?

์˜ˆ, ์†์„ฑ ํŽ˜์ด์ง€๊ฐ€ ๋Œ€์ƒ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ œ๊ฑฐํ•˜๋ฉด UI๊ฐ€ ์ œ๊ฑฐ๋˜๋ฏ€๋กœ ํŒŒ์ผ์„ ์ˆ˜๋™์œผ๋กœ ํŽธ์ง‘ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€์ด ๋ชจ๋“  ๊ฒƒ์„ ๋ฌป๋Š” ์ด์œ ๋Š” ๋ช‡ ์ฃผ ์ „์— .csproj ๋ฐ .vbproj (https://www.npmjs.com/package/csproj2ts)์—์„œ TypeScript ๋นŒ๋“œ ์†์„ฑ์„ ์ฝ๊ธฐ ์œ„ํ•ด npm ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž‘์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ grunt-ts์— ํ†ตํ•ฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ฌ์„ฑํ•˜๋ ค๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์•ฝ๊ฐ„์˜ ๊ฐ€์žฅ์ž๋ฆฌ๊ฐ€ ์žˆ์œผ๋ฉฐ ์ž‘๋™ํ•˜๋ ค๋ฉด ๋ช‡ ๊ตฐ๋ฐ๋ฅผ ํ•ดํ‚นํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. @paulvanbrenk ๋Š” ํ˜„์žฌ VS์—์„œ tsconfig์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ,์ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ ์†์„ฑ ํŽ˜์ด์ง€๊ฐ€์žˆ๋Š” ๊ฒฝ์šฐ tsconfig ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ASP.net 5 ํ”„๋กœ์ ํŠธ ์—์„œ ๋” ๋‚˜์€ ํ†ตํ•ฉ์„ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, 1. grubt / bower ์ง€์›, 2. ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ธฐ๋ฐ˜๋ณด๊ธฐ, 3. tsconfig๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ์†์„ฑ ๊ด€๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  4. ๋‹ค๋ฅธ ํŽธ์ง‘์ž / IDE์™€์˜ ๊ฐ„๋‹จํ•œ ์ƒํ˜ธ ์ž‘์šฉ. ๋‚˜๋Š” ์ด๊ฒƒ์ด ๋‹น์‹ ์ด ์„ค๋ช…ํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค์™€ ์ž˜ ๋งž์„ ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ๊ณ  ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ํ•ดํ‚น ํ•  ํ•„์š”๊ฐ€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์—์„œ ์˜ฌ ๊ฒƒ์ด๋ฏ€๋กœ ์•ฝ๊ฐ„์˜ ๋Œ€๊ธฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. :)

๋˜ํ•œ ๋‹ค์Œ๊ณผ ๊ฐ™์ดํ•ด๋„ ๋ณด์ธ๋‹ค : , TypeScript ๋นŒ๋“œ ํƒญ์„ ํ‘œ์‹œํ•˜๋ ค๋ฉด ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ์„ ๋””๋ฒ„๊ทธ๋กœ ์„ค์ • ํ•œ ๋‹ค์Œ ๋‹ค์‹œ๋กœ๋“œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ๊ฐ€๋กœ๋“œ ๋  ๋•Œ ๊ฐ€์ ธ ์˜ค๊ธฐ๊ฐ€๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ์ด ๊ฐ€์ ธ ์˜ค๊ธฐ์—์„œ๋Š” '๊ตฌ์„ฑ' '๋””๋ฒ„๊ทธ'์—์„œ๋งŒ๋กœ๋“œ๋˜์—ˆ๋‹ค๊ณ  ๋งํ•˜๊ณ  ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•ด๋„ ๊ฐ•์ œ๋กœ ๋‹ค์‹œ๋กœ๋“œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค, @mhegazy- ๋‚˜๋Š” ๋‹น์‹ ์„ ํŠธ๋กค๋งํ•˜์ง€ ์•Š์„ ๊ฒƒ์„ ์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค!
: D ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์„ธ์š”. ํ•ญ์ƒ ํ”ผ๋“œ๋ฐฑ ๋ฐ›๊ธฐ๋ฅผ ์ข‹์•„ํ•˜๊ณ  ๋„์›€์ด ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

ํ™•์ธ. ์ •๋ง ํ›Œ๋ฅญํ•œ ์ •๋ณด์™€ ์ฒ ์ €ํ•œ ํ† ๋ก ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

@paulvanbrenk ์—๊ฒŒ ๋˜์ง€๊ธฐ ๋งŒํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค. tsconfig ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ๋ž˜ ์ƒํƒœ์—์„œ๋„ VisualStudio TypeScript ๋นŒ๋“œ๋ฅผ ๋น„ํ™œ์„ฑํ™” ํ•  ์ˆ˜์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฉด ๋ฉ‹์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค (CTRL + SHIFT + B ์˜๋ฏธ). C # ๋“ฑ์„ ๋นŒ๋“œํ•˜์ง€๋งŒ TypeScript๋Š” ๋นŒ๋“œํ•˜์ง€ ์•Š์Œ) GUI๋ฅผ ํ†ตํ•ด TypeScript ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜์žˆ๋Š” ๊ธฐ๋Šฅ์€ ๊ทธ๋Œ€๋กœ๋‘๊ณ  ์™ธ๋ถ€ TypeScript ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ ์ปดํŒŒ์ผ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ๋„์›€์ด ๋  ์ˆ˜์žˆ๋Š” ์ด์œ ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์œผ๋ฉฐ ์ง€๊ธˆ์€ ์ด๊ฒƒ์ด ์‹ค์ œ๋กœ ์šฐ์—ฐํžˆ ๋งŒ ์ง€์›๋˜๊ณ  ๊ฑฐ์นœ ๊ฐ€์žฅ์ž๋ฆฌ๊ฐ€์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค.

tsconfig ์•„์ด๋””์–ด๋Š” ํ›Œ๋ฅญํ•˜์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์‹ค์ œ๋กœ ๋„์›€์ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ์ด์ „ ๋ฒ„์ „์˜ TypeScript ์‚ฌ์šฉ
  • ๊ฐ™์€ ์ปดํ“จํ„ฐ์˜ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ ๋‹ค๋ฅธ ๋ฒ„์ „์˜ TypeScript ์‚ฌ์šฉ
  • TypeScript์˜ ์‹คํ—˜ ๋ฒ„์ „ ์‚ฌ์šฉ (์˜ˆ : JSX ๋ฅผ ์ง€์›ํ•˜๋Š” @fdecampredon์˜ ๋ฒ„์ „)
  • ์ฐธ์กฐ ๊ด€๋ฆฌ๋ฅผ ์ž๋™ํ™”ํ•˜๊ณ  TypeScript๊ฐ€ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” grunt-ts์™€ ๊ฐ™์€ ๋นŒ๋“œ ๋„๊ตฌ ์‚ฌ์šฉ
  • ๊ธฐํƒ€.

Visual Studio ์‚ฌ์šฉ์ž๊ฐ€ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๊ฐœ๋ฐœ ํ•œ TypeScript ์ปดํŒŒ์ผ๋Ÿฌ ์‹œ์Šคํ…œ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๋™์‹œ์— Visual Studio ๋‚ด์—์„œ ๋ฉ‹์ง„ UI๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ๋ฉ‹์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค (ํŠนํžˆ ๋ฉ‹์ง„ Task Runner Explorer ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ์‚ฌ์šฉ). "Disable TypeScript Build"๋ผ๋Š” ์ฒดํฌ ๋ฐ•์Šค๋ฅผ ์ฝ”๋”ฉํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„๊ณผ ๋น„๊ตํ•˜์—ฌ ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋  ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ค‘์š”ํ•œ ์ด์ ์„ ํ‰๊ฐ€ ํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

"Disable TypeScript Build"๋ผ๋Š” ์ฒดํฌ ๋ฐ•์Šค๋ฅผ ์ฝ”๋”ฉํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„๊ณผ ๋น„๊ตํ•˜์—ฌ ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋  ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ค‘์š”ํ•œ ์ด์ ์„ ํ‰๊ฐ€ ํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ ์ด๊ฒƒ์€ typescript targets ์ฐธ์กฐ๋ฅผ ์ œ๊ฑฐํ•œ ๋‹ค์Œ ๋ฌผ๊ฑด์„ ๋‹ค๋ฅด๊ฒŒ ๋นŒ๋“œํ•˜๋Š” grunt ๋Œ€์ƒ์œผ๋กœ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋ฌด๊ฒƒ๋„ํ•˜์ง€ ๋ง๋ผ๊ณ ํ•˜๋Š” ์กฐ๊ฑด์ด์žˆ๋Š” .targets ํŒŒ์ผ์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ์ด์ƒํ•˜๊ฒŒ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค. ์™œ ์ฒ˜์Œ์— ๊ทธ๊ฒƒ์„ ํฌํ•จํ•ฉ๋‹ˆ๊นŒ? ํ‘œ์ค€ typescript ๋Œ€์ƒ์„ ๋Œ€์ฒดํ•˜๋Š” .targets ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ๊บผ์ด ๋„์™€ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.์ด ํŒŒ์ผ์—๋Š” <TypeScriptEnabled>true</TypeScriptEnabled> ํƒœ๊ทธ๊ฐ€ ํฌํ•จ๋˜๊ณ  VS๋ฅผ ๊ธฐ๋ณธ ํƒœ๊ทธ ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ง€๋งŒ ๋นŒ๋“œ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

ํ—ˆ. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ƒ๊ฐ ํ–ˆ์–ด์•ผํ–ˆ๋‹ค. ๋‚˜๋Š” .targets ํŒŒ์ผ์„์ด ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ์œผ๋กœ ์ทจ๊ธ‰ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ๋ฌผ๋ก  ์ด๊ฒƒ์€ ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ด๋œ๋‹ค. ํƒ€๊ฒŸ ํŒŒ์ผ ํ˜•์‹์„ ์‚ดํŽด๋ณด๊ณ  ๋‹ค์‹œ ์—ฐ๋ฝ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

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

๋Œ€๋ฐ•! .csproj ํŒŒ์ผ์„ ๋‹ค์Œ 4 ์ค„๋กœ ์„ค์ •ํ•˜์—ฌ ๋ฏธ๋‹ˆ๋ฉ€ ํ•œ ๊ด€์ ์—์„œ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

  <Import Project="$(ProjectDir)\custom.TypeScript.targets" />
  <PropertyGroup>
    <TypeScriptEnabled>true</TypeScriptEnabled>
  </PropertyGroup>

๊ทธ๋ฆฌ๊ณ  ๋ฏธ๋‹ˆ๋ฉ€ ํ•œ custom.TypeScript.targets ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <VsToolsPath Condition="'$(VsToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VsToolsPath>
  </PropertyGroup>
  <UsingTask TaskName="TypeScript.Tasks.VsTsc" AssemblyFile="$(VSToolsPath)\TypeScript\TypeScript.tasks.dll" />
  <PropertyGroup>
    <CfgPropertyPagesGuidsAddCSharp>{d4683cae-88c4-4b85-863d-ac8014f3ba36}</CfgPropertyPagesGuidsAddCSharp>
    <CfgPropertyPagesGuidsAddVB>{d4683cae-88c4-4b85-863d-ac8014f3ba36}</CfgPropertyPagesGuidsAddVB>
    <CfgPropertyPagesGuidsAddTypeScript>{d4683cae-88c4-4b85-863d-ac8014f3ba36}</CfgPropertyPagesGuidsAddTypeScript>
  </PropertyGroup>
  <ItemGroup>
    <ProjectCapability Include="TypeScript" />
  </ItemGroup>
</Project>

๋Œ€์ƒ ํŒŒ์ผ์— <TypeScriptEnabled /> ํƒœ๊ทธ๋ฅผ ๋„ฃ์œผ๋ ค๊ณ ํ–ˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค (VS๋Š” .ts ํŒŒ์ผ์„ ๋Š์Šจํ•œ ๊ฒƒ์œผ๋กœ ์ทจ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค). ๊ทธ ์ด์œ ๋ฅผ ์•„์‹ญ๋‹ˆ๊นŒ? (MSBuild๋ฅผ ์•„๋Š” ์‚ฌ๋žŒ์—๊ฒŒ๋Š” ์ด๊ฒƒ์ด ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค-์•„๋งˆ๋„ ์ผ์ข…์˜ ๋ฒ”์œ„ ๋ฌธ์ œ์ผ๊นŒ์š”?).

์ด ์‹œ์ ์—์„œ ์ด๊ฒƒ์ด ๋‚ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. VS Build๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ ๋  ๋•Œ Grunt ๋˜๋Š” Gulp ์ž‘์—…์„ ์‹œ์ž‘ํ•  ์ˆ˜์žˆ๋Š” Task Runner Explorer ํ™•์žฅ์„ ์‚ฌ์šฉํ•˜์—ฌ Grunt ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋นŒ๋“œ๋Š” TypeScript ์ปดํŒŒ์ผ ๊ฒฐ๊ณผ์— ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์„ฑ๊ณตํ•œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ๋˜์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ TRX ์ฐฝ์—์„œ grunt-ts์˜ ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์†์„ฑ ์ฐฝ์— "TypeScript ๋นŒ๋“œ"ํŒจ๋„์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์˜ต์…˜์„ ์„ ํƒํ•˜๋ฉด ์ €์žฅ์‹œ ์ปดํŒŒ์ผ์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. C # ๋˜๋Š” VB ์ฝ”๋“œ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์œผ๋ฉด ๋นŒ๋“œ๊ฐ€ ์—ฌ์ „ํžˆ ์‹คํŒจํ•œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค (์ข‹์€ ์ ). ๊ธฐ๋ณธ Visual Studio "TypeScript๋ฅผ ์‚ฌ์šฉํ•˜๋Š” HTML ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ"๋˜๋Š” ASP.NET ์›น ํ”„๋กœ์ ํŠธ์—์„œ ์—ฌ๊ธฐ๋กœ ์ด๋™ํ•˜๋Š” ์„ค์ •์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

์œ„์˜ ๋ฏธ๋‹ˆ๋ฉ€๋ฆฌ์ŠคํŠธ .targets ํŒŒ์ผ์„ grunt-ts๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ฆ‰ ์šฐ๋ฆฌ๋Š” ๊ทธ๋“ค์˜ ํ”„๋กœ์ ํŠธ์˜ .targets ๋ผ์ธ์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค ๊ฒƒ์„ ์˜๋ฏธ <Import Project="$(ProjectDir)\node_modules\grunt-ts\custom.TypeScript.targets" /> ๋ฐ ์„ค์ • <TypeScriptEnabled> .

๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค !!

๋‚˜๋Š” ๋„ฃ์–ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค ๋Œ€์ƒ ํŒŒ์ผ์— ํƒœ๊ทธ๊ฐ€ ์žˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค (VS๋Š” .ts ํŒŒ์ผ์„ ๋Š์Šจํ•œ ๊ฒƒ์œผ๋กœ ์ทจ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค). ๊ทธ ์ด์œ ๋ฅผ ์•„์‹ญ๋‹ˆ๊นŒ? (MSBuild๋ฅผ ์•„๋Š” ์‚ฌ๋žŒ์—๊ฒŒ๋Š” ์ด๊ฒƒ์ด ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค-์•„๋งˆ๋„ ์ผ์ข…์˜ ๋ฒ”์œ„ ๋ฌธ์ œ์ผ๊นŒ์š”?).

์ด๊ฑด ์ด์ƒํ•ด. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ์˜ ๋ชฉํ‘œ์—์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋ฉฐ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์†์„ฑ์ด์žˆ๋Š” ๋‹ค๋ฅธ ๋Œ€์ƒ์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์–ด๋–ค ์กฐ๊ฑด? ๋‚˜๋Š” ์ƒˆ๋กœ์šด ts ํ”„๋กœ์ ํŠธ์—์„œ ๊ทธ๊ฒƒ์„ ์‹œ๋„ํ•˜๊ณ , Microsoft.TypeScript.targets๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , ๋‹น์‹ ์˜ ๊ฒƒ์„ ๋„ฃ๊ณ , ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.์ง„์‹ค ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

์œ„์˜ ๋ฏธ๋‹ˆ๋ฉ€๋ฆฌ์ŠคํŠธ .targets ํŒŒ์ผ์„ grunt-ts๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ฆ‰, ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํ”„๋กœ์ ํŠธ์˜ .targets ๋ผ์ธ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—…๋ฐ์ดํŠธํ•˜๋ผ๊ณ  ๋งํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค. ๋ฐ ์„ค์ •.

๋‚˜๋Š” ์ด๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฑฐ๊ธฐ์—์„œ TypeScriptEnabled๋ฅผ ์–ป์œผ๋ ค๊ณ  ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ ์ง„๋‹จ์— ๋„์›€์ด ๋  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ์„ธ์š”.

๋ช‡ ๊ฐ€์ง€ ์ฐธ๊ณ  ์‚ฌํ•ญ์€ ๋‹ค๋ฅธ ์ž‘์—…์— ํ•„์š”ํ•˜์ง€ ์•Š๋Š” ํ•œ tasks.dll ์ฐธ์กฐ ๋‚˜ VsToolsPath ์ •์˜๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ง‘์—์žˆ๋Š” ์ปดํ“จํ„ฐ์—์„œ ๋‹น์‹ ์ด ์˜ˆ์ƒํ–ˆ๋˜ ํ–‰๋™์„๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. DLL์— ๋Œ€ํ•œ ์ฐธ์กฐ ์—†์ด๋„ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ „์— ์‹ค์ˆ˜ ํ•œ ๊ฒŒ ํ‹€๋ฆผ ์—†์œผ๋‹ˆ ๋‚ด์ผ ๋‹ค์‹œ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ •๋ง ๋Œ€๋‹จํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค! ๊ณ ๋งˆ์›Œ, ๋ชจํ•˜๋ฉ”๋“œ. ์ด๊ฒƒ์€ ๋ฉฐ์น  ๋‚ด์— grunt-ts์˜ ์ผ๋ถ€๋กœ ๊ณต๊ฐœ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์˜ ์›์ธ ์ค‘ ํ•˜๋‚˜๋Š” ๋Œ€์ƒ ํŒŒ์ผ์ด VS์—์„œ ํ•œ ๋ฒˆ๋งŒ๋กœ๋“œ๋˜๋ฏ€๋กœ ๋Œ€์ƒ์„ ํŽธ์ง‘ํ•˜๋ฉด VS๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ๋•Œ๊นŒ์ง€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํ”„๋กœ์ ํŠธ์— ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿด ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ์–ธ๋กœ๋“œ / ๋‹ค์‹œ๋กœ๋“œํ•˜๊ณ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ง‘์—์„œ VS๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ฌธ์„œ์— ๊ธฐ๋ก ํ•  ๊ฒƒ์ด๋‹ค.

@mhegazy ๋ชจ๋“  ๋„์›€์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. "Visual Studio ํ”„๋กœ์ ํŠธ์—์„œ ์ปดํŒŒ์ผ"๊ธฐ๋Šฅ์ด ํฌํ•จ ๋œ grunt-ts 4.0.0์„ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/TypeStrong/grunt-ts#vs

VS ๋นŒ๋“œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ• :

https://github.com/TypeStrong/grunt-ts/blob/master/docs/DisableVisualStudioBuild.md

์•„์ฃผ ๋ฉ‹์ง€๋‹ค! ๋‚˜๋Š” ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ข‹์•„ํ•œ๋‹ค.

๊ณ ๋งˆ์›Œ, ๋ผ์ด์–ธ. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๋ฐํ˜€ ์กŒ๋Š”์ง€ ์ƒ๋‹นํžˆ ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค. tsconfig๊ฐ€ ๋‚˜์˜ค๋ฉด ๋œ ํ•„์š”ํ•˜์ง€๋งŒ ๊ทธ๋•Œ๊นŒ์ง€ ๊ฐญ์„ ๋ฉ”์šฐ๊ณ  ๋ฌผ๋ก  1.5 ์ด์ „์˜ TypeScript ์ปดํŒŒ์ผ๋Ÿฌ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.

์ถ”์‹  : ์˜ค๋Š˜ ๋‘ ๋ฒˆ์˜ ๋ฒ„๊ทธ๋ณด๊ณ ๊ฐ€ ์žˆ์—ˆ์œผ๋ฏ€๋กœ ์˜ค๋Š˜ ๋ฐค 4.0.1์„ ํ‘ธ์‹œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ VS2015 RTM์—๋Š” TypeScriptCompile์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋” ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked> ๋ฅผ .csproj ์— ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค (์˜ˆ : ์ฒซ ๋ฒˆ์งธ <PropertyGroup> .

๊ฐ์‚ฌ.

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