typescript - Hvorfor noen typer fra biblioteket mitt ikke autfullfører når de brukes i et prosjekt
Jeg har mitt eget bibliotek hvor jeg har mine grunnleggende komponenter som input, containere, osv.
Bibliotekene i prosjektet mitt pakkes sammen som hvilket som helst tredjepartsbibliotek. Problemet er at når jeg bruker det i prosjektet mitt, autoutfylles ikke typene som importeres fra en annen fil i biblioteket, men hvis jeg definerer alle typene i samme fil som jeg eksporterer komponenten fra, autoutfylles de riktig.
Det ser ut til at det ikke løser typene når de ikke er i samme fil. De løses godt innenfor biblioteket, men ikke i den eksporterte pakken.
For eksempel fungerer følgende godt:
interface IInputProps{ ......}
const input=({inputProps:IInputProps})=>.....
Følgende fungerer godt på biblioteket, men fullfører ikke typene automatisk:
import {IInputProps} from './Types'
const input=({inputProps:IInputProps})=>....
Noen idé?
Dette er min tsconfig.json i mitt bibliotek:
{
"compilerOptions": {
"baseUrl": "src",
"lib": ["dom", "dom.iterable", "esnext", "es5"],
"allowJs": true,
"allowSyntheticDefaultImports": true,
"skipLibCheck": true,
"esModuleInterop": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": false,
"jsx": "react-jsx",
"outDir": "dist/library",
"sourceMap": true,
"declaration": true,
"strictNullChecks": true,
"noImplicitAny": false,
"downlevelIteration": true,
"types": ["node", "lodash", "jest", "sortablejs"],
"typeRoots": [
"src/typings/*.d.ts",
"node_modules/@types",
"node_modules/ui-lib/src/typings/*.d.ts",
"node_modules/jest-canvas-mock/types/index.ts"
]
},
"include": [
"src/**/*",
"src/mylib-ui/typings/*.d.ts",
"node_modules/ui-library/**/*.d.ts"
],
"exclude": ["src/**/*.spec.*", "src/**/*.md", "dist"]
}
Min webpack-konfigurasjon i biblioteket mitt er:
{
test: /\.(ts|js)x?$/i,
include: [srcPath, uiLibraryPath],
use: [
'babel-loader', //javascript files loader
{
loader: 'ts-loader', //typescript loader
options: {
allowTsInNodeModules: true,
transpileOnly: true,
},
},
],
},