Usando Vite, TypeScript e React. Enfrentando um problema com a importação automática de .d.ts
arquivos personalizados no VS Code.
As importações manuais funcionam bem, o .d.ts
arquivo é detectado pelo TypeScript. Problema com o VS Code que não detecta importações automáticas para o formato Button.d.ts
. O VS Code consegue detectar o .d.ts
arquivo e importá-lo automaticamente se eu renomeá-lo para index.d.ts
.
Estrutura de pastas:
src/
├── components/
│ ├── Button/
│ │ ├── Button.tsx
│ │ └── Button.d.ts
Button.d.ts
:
export type TypeButton = {className?:string}
Button.tsx
:
import type {TypeButton} from "./Button.d"
const Button = ({className=""}:TypeButton) =>{
return <button className={className}></button>
}
export default Button
package.json
:
{
"name": "made-you-look",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc -b && vite build",
"lint": "eslint .",
"preview": "vite preview"
},
"dependencies": {
"react": "^19.0.0",
"react-dom": "^19.0.0"
},
"devDependencies": {
"@eslint/js": "^9.21.0",
"@types/react": "^19.0.10",
"@types/react-dom": "^19.0.4",
"@vitejs/plugin-react-swc": "^3.8.0",
"eslint": "^9.21.0",
"eslint-plugin-react-hooks": "^5.1.0",
"eslint-plugin-react-refresh": "^0.4.19",
"globals": "^15.15.0",
"typescript": "~5.7.2",
"typescript-eslint": "^8.24.1",
"vite": "^6.2.0"
}
}
tsconfig.json
:
{
"compilerOptions": {
"baseUrl": "./",
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
"target": "ES2020",
"useDefineForClassFields": true,
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"module": "ESNext",
"skipLibCheck": true,
/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"isolatedModules": true,
"moduleDetection": "force",
"noEmit": true,
"jsx": "react-jsx",
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
"noUncheckedSideEffectImports": true,
"declaration": true
},
"include": ["src"]
}
Um
.d.ts
arquivo é usado para fornecer informações de tipo sobre uma API escrita em JavaScript . Em um projeto Typescript, se você importar um módulo JS como Button.js, ele usará o Button.d.ts correspondente para coletar informações de tipo. Ao compilar o TS com a opçãodeclaration: true
na sua configuração, estes são criados automaticamente para que o consumidor também tenha acesso às informações de tipo. Isso é necessário, pois os tipos não existem no JS compilado. Você só precisa criar.d.ts
arquivos manualmente para projetos que possuem apenas bases de código JS (legacy ou não).No entanto, no seu caso, você está escrevendo em TypeScript. Você pode simplesmente inserir sua declaração de tipo no seu arquivo
Button.tsx
ou em qualquer outro.ts
. Assim, seu ambiente será capaz de lidar com isso corretamente.