我们是否应该在类型定义的导入或导出时添加类型前缀

问题描述 投票:0回答:1

对于类型,当我们导出类型时,是否应该添加前缀

type
,例如,

export type {
  TPromptCommentFieldProps,
};

或者当我们导入类型时,

import { type TPromptCommentFieldProps } from 'test-path';

或两者皆有。

我已经看到,在一个存储库中,当导入类型时,类型会带有前缀,而在另一个存储库中,当类型被公开时,我想知道其中的区别以及在哪里添加

type
前缀。

typescript types import export
1个回答
0
投票

类型不会进入我们的 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 中启用

isolatedModules

 标志时,通常会发生这种情况。它会尝试警告您,您正在编写的代码可能会被单文件转译器错误地解释。

因此,这取决于风格和需要,是否使用

export

import
 来书写。如果事情坏了,那么你“必须”。如果您想更明确地导入/导出内容,那么您

© www.soinside.com 2019 - 2024. All rights reserved.