Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 对于声明文件和React组件道具,是否建议使用TypeScript接口?_Reactjs_Typescript - Fatal编程技术网

Reactjs 对于声明文件和React组件道具,是否建议使用TypeScript接口?

Reactjs 对于声明文件和React组件道具,是否建议使用TypeScript接口?,reactjs,typescript,Reactjs,Typescript,每当我需要为对象创建类型时,我通常会在我的声明中这样编写它们。d.ts: type TagsObject = { _id: string; tag: string; } type ProjectData = { _createdAt: string; _id: string; _rev: string; _type: string; _updatedAt: string; tags: Array<TagsObject>; } 类型标记对象={ _i

每当我需要为对象创建类型时,我通常会在我的
声明中这样编写它们。d.ts

type TagsObject = {
  _id: string;
  tag: string;
}

type ProjectData = {
  _createdAt: string;
  _id: string;
  _rev: string;
  _type: string;
  _updatedAt: string;
  tags: Array<TagsObject>;
}
类型标记对象={
_id:字符串;
标签:字符串;
}
类型ProjectData={
_createdAt:string;
_id:字符串;
_版次:字符串;
_类型:字符串;
_updatedAt:string;
标签:数组;
}
对于React组件道具,我会这样写:

type IndexProps = {
  recentProjects: Array<ProjectData>;
  staticText: HomeStaticText;
};

export default function Index({ recentProjects, staticText }: IndexProps)
type IndexProps={
近期项目:阵列;
静态文本:HomeStaticText;
};
导出默认函数索引({recentProjects,staticText}:IndexProps)
对于在
declaration.d.ts
中声明类型,我发现建议使用接口,因为它们更适合对象。然而,对于React组件道具,我看到了在线研究时使用的类型和接口


我知道接口和类型非常相似,但在声明和React组件道具中使用哪一个更好?

声明文件的目的是在
Javascript
代码中引入
类型,而不是在
Typescript
代码中。在Typescript中,您可以直接导入
types.ts
文件,也可以在与代码相同的目录中创建类型

现在,说到你的问题

接口vs类型来声明对象类型

接口是这样创建的

接口人{
名称:字符串;
年龄:弦;
}
类型是这样创建的

type Person={
名称:字符串;
年龄:弦;
}
接口和类型都有相似的用途,只是有一些关键的区别

  • :可以在同一代码中多次定义接口。接口的声明通过Typescript合并在一起形成一个接口。这就是它的样子
  • 接口人{
    名称:字符串;
    }
    //使用新的或现有的接口重新定义相同的接口是完全可以的
    //财产。但是相同的属性应该具有相同的类型。
    接口人{
    年龄:人数;
    }
    //现在,person界面包含两个属性:name和age
    
    另一方面,类型别名在代码中只能定义一次,不能再次声明。尽管您可以在不同的文件中声明相同的类型,这些文件被视为局部变量。但在同一文件中,不能再次定义类型

  • 接口已打开以添加新属性
  • 在声明合并的帮助下,接口允许我们向它们引入新属性,而类型别名则不允许

    哪一个更适合组件道具

    我想两者都有。我们不能选一个。但在我个人看来,我更喜欢使用对象声明接口,因为它们与代码的其他部分配合得很好。因为道具只定义一次,所以也可以使用类型。这是个人的选择,而不是最佳实践

    访问以查看b/w类型和接口之间的差异