TypeScript类型定义:导入、导出或两者都需添加type前缀?
关于TypeScript类型导入/导出时
type前缀的使用说明 两种写法的核心区别
这两种写法都是TypeScript为明确区分类型和值提供的语法,本质都是帮助编译器和工具链准确识别类型成员,避免混淆。
导出时添加type前缀
这种写法是对类型导出的批量显式声明,直接告知TS:当前导出的所有成员都是类型,而非可执行的变量、函数等值。
export type { TPromptCommentFieldProps, };
适合在专门存放类型定义的文件中使用,能和值导出(比如export { fetchData })清晰划清边界。
导入时添加type前缀
这种写法是在导入阶段单独标记某个成员为类型,更适合混合导入类型和值的场景:
// 同时导入类型和值 import { type TPromptCommentFieldProps, submitComment } from 'test-path';
这样能直观区分哪些是类型、哪些是可执行的代码,避免TS在类型推断时出现歧义。
是否需要两者都添加?
完全合法,但属于冗余操作。只要导出或导入的其中一端明确标记了type,TS就能正确识别成员的类型属性。除非团队有强制统一的规范要求,否则没必要重复添加。
选择建议
- 若文件仅导出类型(无任何值导出),优先用
export type { ... }的批量写法,整体可读性更强。 - 若需要混合导入/导出类型和值,推荐在导入时给类型成员加
type前缀,区分度更高。 - 最重要的一点:遵循团队已有的代码规范,保持项目内写法统一,比纠结单一写法的优劣更关键。
内容的提问来源于stack exchange,提问作者Henok Tesfaye
相关产品推荐
相关产品推荐

