对于类型,当我们导出类型时,是否应该添加前缀
type
,例如,
export type {
TPromptCommentFieldProps,
};
或者当我们导入类型时,
import { type TPromptCommentFieldProps } from 'test-path';
或两者皆有。
我已经看到,在一个存储库中,当导入类型时,类型会带有前缀,而在另一个存储库中,当类型被公开时,我想知道其中的区别以及在哪里添加
type
前缀。
类型不会进入我们的 JavaScript 代码,编译器会在生成 JS 时尝试删除它们。
像
Babel
这样的转译器一次只处理(或曾经处理)一个文件。所以Babel
很难判断下面的导入中TPromptCommentFieldProps
是类型还是值。
import { TPromptCommentFieldProps } from 'test-path';
阅读此github评论
这就是添加
type
关键字的原因。
TypeScript
转译器不存在这个问题,因为它一起查看整个类型系统而不是单个文件。
对于导出类似,如果您在文件中导入某些内容并从那里导出它,那么单文件转译器将无法区分类型和值之间的区别。
import { someType, someFunction } from "someModule";
export { someType, someFunction };
引入导入类型和导出类型的全部目的是让大多数用户不必考虑它们。
这是 TS 贡献者之一的github 评论:
目的是让您除非需要,否则不要使用导入类型。如果您对仅类型导入没有特定需求,您可以将它们视为一种风格选择。如果您编写的代码可能会导致此类问题,您的 IDE 将尝试向您发出警告(甚至为您修复问题)。当您在 tsconfig 中启用 标志时,通常会发生这种情况。它会尝试警告您,您正在编写的代码可能会被单文件转译器错误地解释。 因此,这取决于风格和需要,是否使用
export
和
import
来书写。如果事情坏了,那么你“必须”。如果您想更明确地导入/导出内容,那么您有。