SvelteKit库dist/index.d.ts未导出自定义类型的解决方法问询
问题解答
你的预期没错,自定义类型SettingsWritable确实应该被导出到dist/index.d.ts中,供库使用者调用。以下是具体解决方法:
1. 在入口文件中显式导出类型
找到对应dist/index.js的源入口文件(通常是src/index.js或src/index.ts),添加类型导出语句:
- 如果是TS入口文件(
src/index.ts),直接修改为:
export { default as Settings } from './components/Settings.svelte'; // 显式导出自定义类型 export type { SettingsWritable } from './types/index';
- 如果是JS入口文件(
src/index.js),可结合JSDoc导出类型:
export { default as Settings } from './components/Settings.svelte'; /** * @typedef {import('./types/index').SettingsWritable} SettingsWritable */ export type { SettingsWritable } from './types/index';
2. 调整tsconfig配置,确保类型文件被编译处理
修改tsconfig.json的include数组,添加对src/types下.d.ts文件的引用:
"include": [ "ambient.d.ts", "./types/**/$types.d.ts", "../vite.config.ts", "../src/**/*.js", "../src/**/*.ts", "../src/**/*.svelte", "../src/types/**/*.d.ts", // 新增此行,确保类型定义文件被纳入编译 "../tests/**/*.js", "../tests/**/*.ts", "../tests/**/*.svelte" ],
3. 重新构建项目
执行项目构建命令,重新生成dist目录。此时dist/index.d.ts会同时包含组件和SettingsWritable类型的导出声明。
原理说明
TypeScript生成声明文件时,仅会包含入口文件中显式导出的内容。之前你的入口文件只导出了组件,因此生成的dist/index.d.ts不会自动包含未导出的SettingsWritable类型。通过在入口文件中显式导出类型,TypeScript会将其纳入最终生成的声明文件。
内容的提问来源于stack exchange,提问作者lve
相关产品推荐
相关产品推荐

