Typescript: typeRoots๊ฐ€ ์‚ฌ์šฉ์ž ์ •์˜ ์„ ์–ธ ํŒŒ์ผ์„ ์ฐพ์ง€ ๋ชปํ•จ

์— ๋งŒ๋“  2018๋…„ 02์›” 28์ผ  ยท  15์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: microsoft/TypeScript



TypeScript ๋ฒ„์ „ :
๋ฒ„์ „ 2.6.2


๊ฒ€์ƒ‰์–ด:
๋ชจ๋“ˆ ๋‚ด๋ณด๋‚ด๊ธฐ ๊ธฐ๋Šฅ, ์™ธ๋ถ€ ๋ชจ๋“ˆ, npm ํŒจํ‚ค์ง€, ํƒ€์‚ฌ ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ์„ ์–ธ ํŒŒ์ผ

์•”ํ˜ธ
src/testFile.ts :

import getFieldList = require('graphql-list-fields');

src/@types/graphql-list-fields/index.d.ts :

// Doing just this below (as suggested by the Typescript Handbook does not work 
// and results in the tsc error under **Actual behavior** below
import { GraphQLResolveInfo } from 'graphql';
declare function getFieldList(info: GraphQLResolveInfo): string[];
export = getFieldList;

// The code below is what actually works instead of the above
/*
declare module 'graphql-list-fields' {
    import { GraphQLResolveInfo } from 'graphql';
    function getFieldList(info: GraphQLResolveInfo): string[];
    export = getFieldList;
}
*/

์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘ :
์˜ค๋ฅ˜์—†์ด ์ปดํŒŒ์ผ.

์‹ค์ œ ํ–‰๋™ :
tsc ์‹คํ–‰ ์ค‘ ์˜ค๋ฅ˜ :

src/testFile.ts(1,31): error TS7016: Could not find a declaration file for module 'graphql-list-fields'. '/node_modules/graphql-list-fields/index.js' implicitly has an 'any' type.
Try `npm install @types/graphql-list-fields` if it exists or add a new declaration (.d.ts) file containing `declare module 'graphql-list-fields';`

graphql-list-fields ์€ ํ˜„์žฌ ๊ฒŒ์‹œ ๋œ ํ˜•์‹ ์„ ์–ธ์ด์—†๋Š” ์‚ฌ์šฉํ•˜๋ ค๋Š” NPM ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค.

Typescript Handbook์˜ ์„ ์–ธ ํŒŒ์ผ ์„น์…˜์„ ์ฝ์€ ํ›„, ๋ชจ๋“ˆ ์‹ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์„ ์–ธ ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๋ ค๊ณ ํ•˜๋Š”๋ฐ module-function.d.ts ์„ ์–ธ ํŒŒ์ผ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ์œ„์˜ index.d.ts ์—์„œ ์ฝ”๋“œ๋ฅผ ์ƒ๊ฐ ํ•ด๋‚ธ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์—ฌ์ „ํžˆ 'graphql-list-fields'๋ชจ๋“ˆ์— ๋Œ€ํ•œ ์„ ์–ธ ํŒŒ์ผ์ด ์—†๋‹ค๊ณ  ๋ถˆํ‰ํ•ฉ๋‹ˆ๋‹ค. ์‹œํ–‰ ์ฐฉ์˜ค ๋์— ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ๊ฒƒ์— declare module 'graphql-list-fields' ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ปดํŒŒ์ผ๋Ÿฌ ์˜ค๋ฅ˜์—†์ด ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

tsconfig ๋ฌธ์„œ์— ์–ธ๊ธ‰ ๋œ๋Œ€๋กœ tsconfig.json "typeRoots": ["./node_modules/@types", "./src/@types"] ์—์„œ declare module 'graphql-list-fields' ์—†์ด๋Š” ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ tsc๊ฐ€ typeRoots์— ์ง€์ •๋œ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์œ ํ˜• ์„ ์–ธ์„ ์ฐพ์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ด€๋ จ ๋ฌธ์ œ:
3019 , 8335

Question

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

TypeRoots๋Š” ์‹ค์ œ๋กœ ํƒ€์ดํ•‘ ๊ณผ์˜ ์—ญ ํ˜ธํ™˜ ๋ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์œ„ํ•ด ์ถ”๊ฐ€ ํ•œ ์ง€์›์ด๋ฏ€๋กœ ํ˜ผ๋™์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€๋Šฅํ•œ ํ•œ ๋ฌธ์„œ์—์„œ ์ œ์™ธํ•˜๋ ค๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

@mhegazy ๋ฌธ์„œ๊ฐ€ ๊ฑฐ์˜ ๋˜๋Š” ์ „ํ˜€์—†๋Š” ์ง€์› ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ํ˜ผ๋ž€์„ ์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ ์ ˆํ•˜๊ฒŒ ๋ฌธ์„œํ™”ํ•˜๋˜ ๊ฒฝ๊ณ  ์–ธ์–ด๋กœ ์ž์œ ๋กญ๊ฒŒ ์ž‘์„ฑ ํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด :

_ ์ฐธ๊ณ  : ์ด ๊ธฐ๋Šฅ์€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์ž…๋ ฅ๊ณผ์˜ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ [์—ฌ๊ธฐ] ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค ._

์ด๊ฒƒ์€ ์ •๋ณด๋ฅผ ์œ„ํ•ด GitHub ์ด์Šˆ, StackExchange ๋“ฑ์„ ์Šค์บ”ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค _vastly_ ๋‚ซ์Šต๋‹ˆ๋‹ค.

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

"typeRoots" ๋Š” ์ „์—ญ ์ฝ”๋“œ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ „์—ญ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค์— ์„ ์–ธ๋˜์–ด ์žˆ๊ณ ์ด๋ฅผ ํฌํ•จํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด declare module 'graphql-list-fields' {.. ์ž‘๋™ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ์ „์—ญ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค์—์„œ ํ•ด๋‹น ์ด๋ฆ„์˜ ๋ชจ๋“ˆ์„ ์„ ์–ธํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“ˆ์˜ ๊ฒฝ์šฐ์—๋Š” ์ž์ฒด ๋ฒ”์œ„๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ฒฝ๋กœ ๋งตํ”ผ ๊ทธ๋งŒ ์žˆ์œผ๋ฉด๋ฉ๋‹ˆ๋‹ค.

๊ฐ™์€ somethign :

{
    "compilerOptions": {
        "target": "es5",
        "baseUrl": "./",
        "paths": {
            "*" : ["src/@t`ypes/*"]
        }
    }
}`

@mhegazy๋ฅผ ์ •๋ฆฌํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. TypeScript ๋ฌธ์„œ, ์•„๋งˆ๋„ ์„ ์–ธ ํŒŒ์ผ ์„น์…˜ ์•„๋ž˜์— ๋” ์ž์„ธํžˆ ์„ค๋ช…๋˜์–ด ์žˆ๋‹ค๋ฉด ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

TypeRoots๋Š” ์‹ค์ œ๋กœ ํƒ€์ดํ•‘ ๊ณผ์˜ ์—ญ ํ˜ธํ™˜ ๋ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์œ„ํ•ด ์ถ”๊ฐ€ ํ•œ ์ง€์›์ด๋ฏ€๋กœ ํ˜ผ๋™์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€๋Šฅํ•œ ํ•œ ๋ฌธ์„œ์—์„œ ์ œ์™ธํ•˜๋ ค๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์„ ์–ธ ํŒŒ์ผ ์„น์…˜์— ๋งž๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. https://www.typescriptlang.org/docs/handbook/module-resolution.html#path -mapping์— ์ด์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“ˆ ํ•ด๊ฒฐ ์„น์…˜ ์ „์ฒด์— ๋Œ€ํ•œ ์„ ์–ธ ํŒŒ์ผ ์„น์…˜์— ๋ฉ”๋ชจ๋ฅผ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ์„น์…˜์„ ์ฝ๊ณ  ์—ฌ์ „ํžˆ ๋ถ€์กฑํ•œ ๋ฌธ์„œ๋ฅผ ์ฐพ์œผ๋ฉด ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

์•„ ๊ทธ๋ ‡๊ตฐ์š”. ๋„ค, ์‹œ์ž‘ํ•ด์•ผ ํ•  ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค. ์ ์–ด๋„ ๊ฒฝ๋กœ ๋งคํ•‘์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์–ธ๊ธ‰๊ณผ https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html ์•„๋ž˜์— ํ•ด๋‹น ๋ฌธ์„œ์— ๋Œ€ํ•œ ๋งํฌ๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

์ •๋ฆฌ๋ฅผ ์œ„ํ•ด์ด ๋ฌธ์ œ๋ฅผ ์ž๋™์œผ๋กœ ๋‹ซ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ ๋ ˆ์ด๋ธ”์€ ํ˜„์žฌ ์กฐ์น˜๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ์ด๋ฏธ ํ•ด๊ฒฐ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๋‚ด ์ด์ „ ์˜๊ฒฌ @ typescript-bot์— ๋ช…์‹œ๋œ๋Œ€๋กœ ๋ฌธ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ด ์—ฌ์ „ํžˆ ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

TypeRoots๋Š” ์‹ค์ œ๋กœ ํƒ€์ดํ•‘ ๊ณผ์˜ ์—ญ ํ˜ธํ™˜ ๋ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์œ„ํ•ด ์ถ”๊ฐ€ ํ•œ ์ง€์›์ด๋ฏ€๋กœ ํ˜ผ๋™์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€๋Šฅํ•œ ํ•œ ๋ฌธ์„œ์—์„œ ์ œ์™ธํ•˜๋ ค๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

@mhegazy ๋ฌธ์„œ๊ฐ€ ๊ฑฐ์˜ ๋˜๋Š” ์ „ํ˜€์—†๋Š” ์ง€์› ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ํ˜ผ๋ž€์„ ์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ ์ ˆํ•˜๊ฒŒ ๋ฌธ์„œํ™”ํ•˜๋˜ ๊ฒฝ๊ณ  ์–ธ์–ด๋กœ ์ž์œ ๋กญ๊ฒŒ ์ž‘์„ฑ ํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด :

_ ์ฐธ๊ณ  : ์ด ๊ธฐ๋Šฅ์€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์ž…๋ ฅ๊ณผ์˜ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ [์—ฌ๊ธฐ] ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค ._

์ด๊ฒƒ์€ ์ •๋ณด๋ฅผ ์œ„ํ•ด GitHub ์ด์Šˆ, StackExchange ๋“ฑ์„ ์Šค์บ”ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค _vastly_ ๋‚ซ์Šต๋‹ˆ๋‹ค.

แ„ แ„ แ„ แ„ แ„ แ„ แ„ : tada : @types ์— ๋Œ€ํ•œ ๊ฒฝ๋กœ ํ•ญ๋ชฉ์ด ๋งˆ์นจ๋‚ด ๋‚ด ๋น„ํ‘œ์ค€ ํ”„๋กœ์ ํŠธ ์„ค์ •์„ ์ž‘๋™ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ˆ„๋ฝ ๋œ ๋ถ€๋ถ„์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์— ๋ฉฐ์น ์„ ๋ณด๋ƒˆ๋‹ค.

์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ํ”„๋กœ์„ธ์Šค๋ฅผ ์•ฝ๊ฐ„ ๋Šฆ์ถ”์–ด๋„ ๊ดœ์ฐฎ๋‹ค๋ฉด package.json์˜ ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ์— TS_NODE_FILES=true ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ •์˜ ์„ ์–ธ ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ง€๊ธˆ ๋ฐ›๊ณ ์žˆ๋‹ค :

The following changes are being made to your tsconfig.json file:
  - compilerOptions.paths must not be set (aliased imports are not supported)

์ด ์˜ต์…˜์€ ์‚ญ์ œ ์ค‘์ž…๋‹ˆ๋‹ค.

@KrzysztofMadejski ๋Š” TS ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ CRA์— ์˜ํ•ด ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ๋Š” typeroots๊ฐ€ ์‹ค์ œ๋กœ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„์œ„ํ•œ ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ์œ ํ˜•์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค. typeroot์—†์ด ์ด๋Ÿฌํ•œ ์œ ํ˜•์„ ์ œ๋Œ€๋กœ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? dts-gen ์‚ฌ์šฉํ•˜์—ฌ ์œ ํ˜•์„ ์ƒ์„ฑํ•˜๊ณ  ์œ ํ˜• ๋ฃจํŠธ์— types ์„ ์ถ”๊ฐ€ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์šด์ด ์—†์Šต๋‹ˆ๋‹ค :-(

@Roaders dts-gen ์ƒ์„ฑ ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜๋Š” ์†”๋ฃจ์…˜์„ ์ฐพ์•˜์Šต๋‹ˆ๊นŒ?

ํŽธ์ง‘ : https://github.com/microsoft/TypeScript/issues/22217#issuecomment -369783776์œผ๋กœ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์—ฌ๊ธฐ์„œ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ํ•œ ๊ฐ€์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

tsconfig.base.json :

"typeRoots": ["node_modules/@types", "types"],

๊ทธ๋ฆฌ๊ณ  ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ :

/node_modules/@types/something/index.d.ts
/types/something-else/index.d.ts

๋‚ด nrwl / nx ์ €์žฅ์†Œ์—์„œ ์ „ํ˜€ ์„ ํƒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐฑ๋งŒ ๊ฐ€์ง€๋ฅผ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ something-else ํด๋”๋ฅผ node_modules/@types ๋กœ ์˜ฎ๊ธฐ๋ฉด ๋งˆ์ˆ ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๊ณ  ์„ ํƒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” typeRoots ๊ฐ€ node_modules/@types ๋งŒํผ ์•„๋ฌด๊ฒƒ๋„ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค

typeRoots๋ฅผ deprecated๋กœ ํ‘œ์‹œํ•˜๊ณ  ์ด์ƒํ•˜๊ณ  ๊ธฐ๋ฐœํ•œ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค๊ณ  ๋งํ•˜๋ฉด ์ ์–ด๋„ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์‹œ๋„๊ฐ€ ์ค‘๋‹จ๋˜์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ํ•„์š”๋กœ ํ•  ๋•Œ๋งˆ๋‹ค ๋กœ์ปฌ ์œ ํ˜•์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ tsconfig.base.json๊ณผ ์‹ธ์šฐ๊ณ  ์œ„์˜ mhegazy ์ฃผ์„์— ๊ฑธ๋ ค ๋„˜์–ด์ง€๋Š” ์‹œ๊ฐ„์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์— ๊ณ„์† ๋ฌผ๋ ค์„œ paths ์˜ต์…˜์„ ๊ตฌ์„ฑํ•ด์•ผํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ ๊ธฐ ๋•Œ๋ฌธ์— ์ ์ ˆํ•œ ์„ค์ •์œผ๋กœ ๊ฐ„๋‹จํ•œ ์ €์žฅ์†Œ ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋„์›€์ด๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

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