λ²κ·Έ μ€λͺ
κ°μ Έ μ€κΈ° λ³μΉ @/
μ μ¬μ©νλλ° μ λλ‘ μλνμ΅λλ€. κ·Έλ° λ€μ Viteλ‘ μ ννκ³ λ£¨νΈ λ³μΉ λ§ μ§μν©λλ€. κ·Έλμ /@/
λ³μΉμ μ¬μ©νλλ‘ μ½λλ₯Ό μ ννμ΅λλ€. λΈλΌμ°μ μμ μ»΄νμΌλκ³ μλνμ§λ§ vscodeμμ μ€λ₯κ° λ°μν©λλ€.
μ¬ννλ €λ©΄
/@/
κ°μ Έ μ€κΈ° μ¬μ©
μμλλ νλ
λͺ¨λ κ²μ΄ μλν©λλ€
μμ€ν (λ€μ μ 보λ₯Ό μμ±νμμμ€) :
λν tsconfig / jsconfig.jsonμ ν΅ν΄ typescriptμ λ³μΉμ ꡬμ±ν΄μΌν©λλ€.
https://www.typescriptlang.org/docs/handbook/module-resolution.html#path -mapping
λλ λν tsc
μ μ»΄νμΌ ν μμλ λμΌν λ¬Έμ μ μ§λ©΄νκ³ μμ΅λλ€. κ·Έλ¬λ svelte-check
μ κ°μ λꡬλ λ³μΉ κ²½λ‘λ₯Ό μ¬λ°λ₯΄κ² νμΈν μ μμΌλ©° OPμ κ°μ μ€λ₯κ° λ°μν©λλ€. νλ‘μ νΈ ν΄λμμ tsconfig.json
λ₯Ό μ λλ‘ ν΄κ²°ν μμλ language-tools
κ΄λ ¨ λ²κ·Έκ°μλ κ² κ°μ΅λλ€.
κ·Έ μ€λ₯λ svelte2tsxμ μν΄ μ£Όμ λ μΌλΆ νΉμ μμ±μ μ¬μ©νμ¬ κ΅¬μ± μμ μ ν κ²μ¬λ₯Ό μννκΈ° λλ¬Έμ λλ€. μ€μ νμΌμ μ°Ύμ μ μμΌλ©΄ svelte2tsxλ₯Ό μ¬μ©νμ¬ νμΌμ λ³ν ν μ μμ΅λλ€.
@cayter tsconfigλ₯Ό μ΄λμ λ£μ΅λκΉ?
@ jasonlyu123 μλλ λ°±μλ / νλ‘ νΈ μλ λͺ¨λμ λν λͺ¨λ Έ λ ν¬ μΈ λ΄ νλ‘μ νΈ ν΄λ ꡬ쑰μ λλ€.
.
βββ Makefile
βββ README.md
βββ database
β βββ database.rules.json
βββ firebase.json
βββ firestore
β βββ firestore.indexes.json
β βββ firestore.rules
βββ functions // backend code
β βββ package-lock.json
β βββ package.json
β βββ src
β β βββ index.ts
β βββ tsconfig.json
βββ hosting // frontend PWA code
β βββ ...
β βββ src
β β βββ components
β β β βββ App.svelte
β β β βββ ...
β β βββ images
β β β βββ cover.png
β β β βββ ...
β β βββ index.css
β β βββ index.ts
β β βββ pages
β β β βββ Auth
β β β β βββ ...
β β β βββ Error
β β β β βββ ...
β β β βββ Home
β β β β βββ ...
β β β βββ User
β β β βββ ...
β β βββ stores
β β βββ ...
β βββ svelte.config.js
β βββ tailwind.config.js
β βββ tsconfig.json
β βββ vite.config.ts
β βββ workbox.config.js
βββ package-lock.json
βββ package.json
hosting / tsconfig.json
{
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"baseUrl": "src",
"declaration": true,
"emitDecoratorMetadata": true,
"esModuleInterop": true,
"experimentalDecorators": true,
"forceConsistentCasingInFileNames": true,
"importHelpers": true,
"importsNotUsedAsValues": "error",
"isolatedModules": true,
"lib": ["dom", "esnext", "es6"],
"module": "esnext",
"moduleResolution": "node",
"noEmit": true,
"noImplicitAny": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"rootDir": "src",
"skipLibCheck": true,
"sourceMap": true,
"strict": true,
"strictBindCallApply": true,
"strictFunctionTypes": true,
"strictPropertyInitialization": true,
"strictNullChecks": true,
"target": "esnext",
"types": ["jest", "node", "svelte"],
"paths": {
"/@/*": ["*"]
}
},
"include": ["src/**/*"],
"exclude": ["node_modules/*", "public/*"]
}
μ€μ νμΌμ μ°Ύμ μ μμΌλ©΄ svelte2tsxλ₯Ό μ¬μ©νμ¬ νμΌμ λ³ν ν μ μμ΅λλ€.
λ€, μ΄κ²μ νλ‘μ νΈμ tsconfig.json
μ μ λ λ³μΉ κ²½λ‘ νμΈκ³Ό κ΄λ ¨μ΄ μμ΅λλ€. λ°λΌμ λ³μΉ κ²½λ‘λ₯Ό μ¬μ©νλ λμ μλ κ²½λ‘λ‘ λ³κ²½νλ©΄ vscode νμ₯ λ° svelte-checkλ ComboBox
κ΅¬μ± μμμ λν OPμ μ€ν¬λ¦° μ·μμ λ³Ό μμλ μ€λ₯λ₯Ό λ μ΄μ λμ§μ§ μμ΅λλ€.
vscodeμ μΆλ ₯ μ±λμ νμΈν μ μμ΅λκΉ? μ€λ₯Έμͺ½ λλ‘ λ€μ΄μμ svelteλ₯Ό μ ννμ΅λλ€. κ·Έλ¦¬κ³ μ΄κ²κ³Ό κ°μ κ²μ΄ μλμ§ νμΈνμμμ€
Initialize new ts service at c:/Current Projects/svelte-app/tsconfig.json
λ° μ¬κΈ°μ λ‘κ·Έλ₯Ό κ²μνμμμ€.
μ΄κ²μ μ¬ν ν μ μμ΅λλ€. μ΄λ€ μ΄μ λ‘ getDefinitionAndBoundSpan
λ μ΄λ¬ν μμΉμμ κ°μ Έμ¨ TS / JS νμΌμ μ²λ¦¬ ν μ ββμμ§λ§ .svelte
νμΌμ μ²λ¦¬ ν μ ββμμ΅λλ€.
λ¬Έμ λ module-loader
μ μμΌλ©°, "is absolute path"μ λν κ²μ¬κ° μ°Έ (리λ
μ€μμ /
λ‘ μμνλ νμΌ κ²½λ‘λ μ λμ μ)μ΄λ―λ‘ μΌλ° TS ν΄μλλ‘ μμν©λλ€. "tsconfig κ²½λ‘μ μ λμ¬ λΆλΆμ
λλ€"μ λν μΆκ° κ²μ¬κ° νμνλ€κ³ μκ°ν©λλ€.
OPλ μ€μ λ‘ @/
μλνλ€κ³ λ§νμ§λ§ λμ³€μ΅λλ€. μ£μ‘ν©λλ€ π
λν¬λ€μ΄ μΌλ§λ λ©μ§ μ§ λ§νλ κ²μ μμλ€. λΉ λ₯Έ μλ΅μ κ°μ¬λ립λλ€
κ°μ₯ μ μ©ν λκΈ
λ¬Έμ λ
module-loader
μ μμΌλ©°, "is absolute path"μ λν κ²μ¬κ° μ°Έ (리λ μ€μμ/
λ‘ μμνλ νμΌ κ²½λ‘λ μ λμ μ)μ΄λ―λ‘ μΌλ° TS ν΄μλλ‘ μμν©λλ€. "tsconfig κ²½λ‘μ μ λμ¬ λΆλΆμ λλ€"μ λν μΆκ° κ²μ¬κ° νμνλ€κ³ μκ°ν©λλ€.