当前位置: 首页 > 知识库问答 >
问题:

在打字稿中使用类型别名与接口注释 React 功能组件

鲍健柏
2023-03-14

我正在用打字稿重写我的React应用程序。我正在尝试将所有组件实现为功能组件。

Typescript允许我们利用类型别名和接口来定义对象的形状或函数签名。我已经讲过了类型和接口的区别。

我读过的几乎所有文章都通过使用接口定义了一个组件,而这个接口本可以使用类型别名。据我所知,interface和type alias对于React组件给出了相同的结果,那么为什么几乎在每个定义中都使用了interface呢

我尝试了几篇关于为什么主要使用Interface而不是类型别名的文章,但找不到任何有用的东西。

注释React组件属性的最好方法是什么,用接口还是用类型别名?

interface AppProps {
  color?: string;
}

const App = (props: AppProps) : JSX.Element => {
  return <div>{props.color}</div>
}

共有1个答案

汪栋
2023-03-14

这是我从其他论坛的开发人员、评论等中获得的汇总答案。

没有明确的方法或答案,因为没有人知道为什么不使用类型别名。

另一方面,使用界面的优点是

>

  • 它有助于使代码结构简洁。

    当你有形状和方法时,你最终会使用界面而不是类型 - 所以对另一个没有方法的人遵循相同的方法将使其可读且易于遵循。

    一种非常方便的模式,大多数人都遵循这种模式作为传统方法。

  •  类似资料:
    • 问题内容: React事件的正确类型是什么。最初,我只是为了简单起见而使用。现在,我正在尝试清理并避免完全使用。 所以像这样一个简单的形式: 我在这里使用什么类型作为事件类型? 似乎没有工作,因为我收到一个错误消息,并且不存在。 对于所有事件的更笼统的回答,我们将不胜感激。 谢谢 问题答案: 该SyntheticEvent接口是通用的: 并且是一般约束与的交集 。 另外,由于事件是由输入元素引起的

    • 问题内容: npm软件包允许我们在TypeScript应用程序内部使用React。我们将组件定义为 在这里,我们必须声明组件属性和状态的类型(在类型变量中)。 在声明了这些类型之后,TypeScript将使用该类型来验证组件的用法(传递给它的道具的形状)。 我想围绕这样的组件创建一个容器。容器将重复使用组件的道具。但是,为了创建具有相同道具的另一个组件,我必须再次重新声明道具的类型。或从原始组件文

    • 我对打字稿有点陌生,让我有点困惑的一件事是类型/接口声明。我正在编写一个库,它目前有几个类和更多的类型/接口声明。我在大多数代码中使用这些类型/接口,最初我会将它们放在 types 文件夹中的单个文件中,然后我会将它们导入到需要的任何位置,现在我在 文件夹中有一个声明命名空间类型的 ,在这个中我导出我在整个代码中使用的所有类型/接口。这种方法可以吗,或者是否有更好的方法来组织类型和接口定义?

    • 我在AngularJS 1.X项目上使用Typescript。我出于不同的目的使用不同的Javascript库。为了对我的源代码进行单元测试,我想使用类型(= 接口)存根一些依赖项。我不想使用 ANY 类型,也不想为每个接口方法编写一个空方法。 我正在寻找一种方法来做这样的事情: 我现在的痛苦是,我要么使用< code>any并实现我的测试用例中调用的所有方法,要么实现接口并实现完整的接口。那太多

    • 和之间的区别是什么? 上述结果如下: “Point”仅指类型,但在此处用作值。 为什么会这样呢?我肯定不会使用作为值,而是使用它来实例化类型。 在哪些情况下,我需要使用,因为不合适?

    • 问题内容: 我正在使用Typescript为我的React项目编写一个高阶组件,这基本上是一个函数,它接受React组件作为参数并返回一个环绕它的新组件。 然而,正如预期的那样,TS抱怨“导出函数的返回类型具有或正在使用私有名称” Anonymous class”。 有问题的功能: 该错误是合理的,因为未导出包装器函数的返回类,而其他模块导入则该函数无法知道返回值是什么。但是我无法在此函数外部声明