什么是<;{}>;在javascript扩展的末尾是什么意思?
我在react native的一个教程中遇到了以下语法。组件的声明,如下所示:什么是<;{}>;在javascript扩展的末尾是什么意思?,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我在react native的一个教程中遇到了以下语法。组件的声明,如下所示: export default class App extends Component<{}> { //implementation } ?这是一种语法,中的内容是您期望对象的类型 该代码段是用typescript编写的。语法用于指定组件上的通用约束 我的建议是,如果您不使用typescript,在阅读教程时基本上可以忽略这个符号。但是,如果您有兴趣了解更多信息: 以下是有关的文档 在react/re
export default class App extends Component<{}> {
//implementation
}
?这是一种语法,
中的内容是您期望对象的类型 该代码段是用typescript编写的。
语法用于指定组件上的通用约束
我的建议是,如果您不使用typescript,在阅读教程时基本上可以忽略这个符号。但是,如果您有兴趣了解更多信息:
以下是有关的文档
在react/react native for typescript中的组件上
基本上,react组件接受两个通用参数,一个用于组件的属性(this.props
),一个用于状态(this.state
)
此外,{}
是没有属性的空对象的类型,因此这基本上意味着可以在不指定任何属性的情况下创建组件。您可以在JSX中使用这个组件,只需一个简单的
。您应该注意,默认情况下,props和state都只是{}
,因此它们不需要像第一个代码片段中那样手动指定。事实上,第一个和第二个代码段在功能上是相同的(尽管只有第二个代码段是有效的jsx,但第一个代码段需要编译typescript)
最后,虽然另一个答案是正确的,但您应该注意,在这种情况下,
中的内容具体是组件的“props”对象的类型,通过this.props
在组件中访问。一般来说,泛型约束几乎可以表示任何东西,但在这种特殊情况下,它是道具的类型。当我们谈论react/react native时,它更可能是(facebook的)而不是typescript
它们的语法非常相似,在本例中完全相同,但流程由RN的packager提供开箱即用的支持,通常使用.js
扩展,并且在该生态系统中更为普遍
无论哪种方式,@CRice的意思都是正确的——在本例中,它是一个类型。这看起来像,并且是声明它是什么类型(在您的案例中是一个对象)的方式,这似乎是typescript。在typescript中,组件
类接受两个通用参数。第一个是道具的类型,第二个是状态的类型。两者都默认为{}
,因此您的两个代码段是等效的。@Sag1v您的注释是正确的答案。你能添加你的评论作为回答来帮助其他人回答同样的问题吗?@jasperseinhorstdone:)
export default class App extends Component {