์๋
ํ์ธ์, ํ์ดํ์คํฌ๋ฆฝํธ๋ฅผ ์ง์ํ ๊ณํ์ด ์์ต๋๊น?
์๋๋ฉด ํ๋ก๋์
์์ ์ฌ์ฉ์ ์ ์ ts ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋์ด ์์ ์ ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ๊ณต์ ํ์๊ฒ ์ต๋๊น?
typescript ์ฝ๋๋ฅผ ์คํํ๋ discord ๋ด์ ๋ง๋ค๋ ค๊ณ ํ์ง๋ง ์๋๋ฐ์ฑ์ ์ง์ํ๋ ๋ค๋ฅธ typescript ์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์ ์ ์์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ๊ฐ์ฅ ๋ณด๊ณ ์ถ์ต๋๋ค. ์๋ง๋ ์ด๊ฒ์ด ์ต๊ณ ์ผ ๊ฒ์
๋๋ค.
ํธ์ง: ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฐฐํ์์ https://nodejs.org/api/vm.html์ ์ฌ์ฉํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ typescript๋ ์ง์ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
TypeScript ์ปดํ์ผ๋ฌ API๋ฅผ ์ฌ์ฉํด ๋ณด์ จ์ต๋๊น? TypeScript ์ฝ๋๋ฅผ JavaScript ์ฝ๋๋ก ๋์ ์ผ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์ ์ ์ฌ์ฉํ๊ณ ํ๋ฅญํ๊ฒ ์๋ํฉ๋๋ค.
const {VM} = require('vm2');
const ts = require('typescript');
const vm = new VM();
const res = ts.transpile(`
let x: number = 3;
x + 5;
`);
console.log(vm.run(res)); // 8
์, ์ด๋ค ์ด์ ๋ก vm2 lol๊ณผ ํจ๊ป ์ฌ์ฉํ ์๊ฐ์ ํ์ง ์์์ต๋๋ค. ์๋ํด ๋ณด๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
์ด ๋ฌธ์ ๋ ์ต๊ทผ ํ๋์ด ์์๊ธฐ ๋๋ฌธ์ ์๋์ผ๋ก ์ค๋๋ ๊ฒ์ผ๋ก ํ์๋์์ต๋๋ค. ๋ ์ด์ ํ๋์ด ์์ผ๋ฉด ํ์๋ฉ๋๋ค. ๊ทํ์ ๊ธฐ์ฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
ts.transpile
๋ฅผ ์ปดํ์ผ๋ฌ๋ก ์ค์ ํ๋ ๊ฒ๋ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
```JS
const {VM} = ์๊ตฌ('vm2');
const ts = ์๊ตฌ('ํ์
์คํฌ๋ฆฝํธ');
const vm = new VM({์ปดํ์ผ๋ฌ: ts.transpile});
console.log(vm.run(
let x: number = 3;
x + 5;
)); // 8
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
TypeScript ์ปดํ์ผ๋ฌ API๋ฅผ ์ฌ์ฉํด ๋ณด์ จ์ต๋๊น? TypeScript ์ฝ๋๋ฅผ JavaScript ์ฝ๋๋ก ๋์ ์ผ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์ ์ ์ฌ์ฉํ๊ณ ํ๋ฅญํ๊ฒ ์๋ํฉ๋๋ค.