Staram się zapewnić typowania na opakowaniu, że ich nie ma:Gdzie należy umieścić niestandardowe pliki .d.ts?
error TS7016: Could not find a declaration file for module 'inputmask-core'. './node_modules/inputmask-core/lib/index.js' implicitly has an 'any' type.
Try `npm install @types/inputmask-core` if it exists or add a new declaration (.d.ts) file containing `declare module 'inputmask-core';`
używam TS-ładowarka w WebPack z maszynopisu 2.4.2 i mam następujący korzenie typu ustanowione w tsconfig.json:
"typeRoots": [
"./node_modules/@types",
"./src/client/types"
]
próbowałem naśladować strukturę pakietów w node_modules/@types
:
src/client/types
|--inputmask-core
|--index.d.ts
z następującym w index.d.ts
:
declare class InputMask {}
export default InputMask;
Ale błąd nadal istnieje. Co ja robię źle? Gdzie powinienem umieścić te niestandardowe pliki .d.ts?
Jaka jest różnica między node_modules/@types
a jakimkolwiek typem roota? Dlaczego TypeScript traktuje je inaczej?
'node_modules/@ types' służy do przechowywania pakietów stron trzecich zawierających informacje o typach dla pakietów, które nie są wyposażone w deklaracje wbudowane. Otrzymuje specjalną obsługę, ponieważ nie importuje się z niego bezpośrednio, a raczej każdy pakiet deklaracji w jest postrzegany jako nałożony na pakiet, dla którego zawiera typy. '" typRoots "' pozwala dostosować lokalizację lub dodać dodatkowe katalogi, które są traktowane w ten specjalny sposób. –
@AluanHaddad - Jeśli dodatkowe katalogi w "typRootach" również będą traktowane w ten specjalny sposób, to dlaczego katalog przeniesienia dla jakiegoś pakietu z 'node_modules/@ types' na inny typRoot zepsuje kompilację? – Rogach
Nie ma wystarczającej ilości informacji, aby powiedzieć. Brak tsconfig, rozdzielczość modułu, itp. Wyobraźmy sobie, że tak jest z zewnętrznym modułem zewnętrznym_, który i tak ma inną semantykę rozdzielczości. W szczególności nie rozwiązuje go ścieżka pliku. –