No meu projeto, uso o Vite para agrupamento/distribuição. O Vite oferece uma maneira de importar imagens pelo caminho, como:
import logo from './assets/logo.png';
Isso não pode ser resolvido pelo TS, então o Vite fornece os módulos em um arquivo chamado client.d.ts. Uma das maneiras sugeridas é importá-lo usando as opções do compilador, o que eu prefiro:
"compilerOptions": {
"types": ["vite/client"]
}
Isso funcionou até agora, mas agora quero importar outros tipos de projeto ( wicg-file-system-access ) para os tipos globais também. É apenas uma coleção de tipos a serem declarados nos tipos globais, então nenhuma importação explícita é necessária nem suportada (eu acho?).
Mas como "types" ignora todos os outros @types que seriam carregados por padrão, não consigo encontrar uma maneira de fazê-lo funcionar.
Após a pesquisa e melhor entendimento, eu gostaria de me livrar da substituição dos "tipos" para garantir que todos os @types disponíveis sejam importados corretamente no futuro.
Brinquei com o "typeRoots", mas sem sucesso. Então, minha pergunta é: existe uma maneira de fazer algo como substituir
"types": ["vite/client"]
com
"typeRoots": ["./node_modules/@types", "./node_modules/vite/client"]
mas acho que não está funcionando, já que "cliente" não é um diretório e nem posso usá-lo, "./node_modules/vite"
pois client.d.ts
não tem nome, index.d.ts
eu acho.
A alternativa seria usar /// <reference types="vite/client" />
um arquivo d.ts no projeto, mas não quero abstrair essa dependência. É uma opinião formada, mas acho que o tsconfig (ao lado das dependências instaladas) deveria configurar minhas importações, e ter um terceiro local para carregar tipos me parece errado.