Reactjs 提供一个接口

Reactjs 提供一个接口,reactjs,typescript,components,Reactjs,Typescript,Components,大家好,我有一些问题,所以我喜欢使用接口来避免混淆内容,同时保持可读性和智能性 现在我的问题是,我想在给定的数据(通过道具)中也使用它,但我不知道怎么做 这是我写的一个例子 因此,我希望在渲染之前得到一个错误,即给定的道具不是正确的类型 这怎么可能呢?我尝试在构造函数函数测试({q}:Question)中编写类型,以及通过React->dont get intellisense编写给定的PropType,但也无法通过接口解决它 我肯定我错过了什么,或者不理解真正的区别,我不会花几个小时去解决它

大家好,我有一些问题,所以我喜欢使用接口来避免混淆内容,同时保持可读性和智能性 现在我的问题是,我想在给定的数据(通过道具)中也使用它,但我不知道怎么做 这是我写的一个例子

因此,我希望在渲染之前得到一个错误,即给定的道具不是正确的类型 这怎么可能呢?我尝试在构造函数函数测试({q}:Question)中编写类型,以及通过React->dont get intellisense编写给定的PropType,但也无法通过接口解决它
我肯定我错过了什么,或者不理解真正的区别,我不会花几个小时去解决它。很高兴能从您的代码沙盒中得到一些帮助,您的文件是JavaScript
.js
而不是TypeScript
.ts
,或者最好是React
.tsx
,它将为您提供智能感知。

从您的代码沙盒中,您的文件是JavaScript
.js
格式,而不是TypeScript
.ts
格式,或者最好是React
.tsx
格式,这将为您提供智能感知。

您的代码存在一些问题:

  • 正如John的文章中提到的,您必须将文件扩展名重命名为
    .tsx
    ,TS才能正确处理这些文件
  • 现在,您的
    问题
    界面定义为
接口问题{
问题:字符串;
答复:[];
}
testCorrect
变量的类型应定义为:

interface Question {
    question: string
    answers: string[]
}
  • 测试
    组件的类型应写为:
接口测试道具{
问:问题
}
函数测试({q}:TestProps):JSX.Element{
...
}
或者,如果您希望将其内联:

函数测试({q}:{q:Question}):JSX.Element{
...
}

您的代码存在一些问题:

  • 正如John的文章中提到的,您必须将文件扩展名重命名为
    .tsx
    ,TS才能正确处理这些文件
  • 现在,您的
    问题
    界面定义为
接口问题{
问题:字符串;
答复:[];
}
testCorrect
变量的类型应定义为:

interface Question {
    question: string
    answers: string[]
}
  • 测试
    组件的类型应写为:
接口测试道具{
问:问题
}
函数测试({q}:TestProps):JSX.Element{
...
}
或者,如果您希望将其内联:

函数测试({q}:{q:Question}):JSX.Element{
...
}

非常感谢,我一直在寻找。谢谢还有一个问题。因此,我使用Context.Provider来传递我的数据(生成的内容),而且我还缺少如何声明类型,这是我的示例(现在一切都应该很好,之前我忘记更改文件了,在我的应用程序中,我确实有了正确的扩展名,现在使用您的解决方案,它可以工作了),这很难在注释中回答。我在sandbox对您的代码进行了一些调整。希望你能跟上他们。谢谢你,是的,我有点理解,但我觉得总是设置类型是一个很大的痛苦。这比任何帮助都要多。谢谢你,我一直在寻找。谢谢还有一个问题。因此,我使用Context.Provider来传递我的数据(生成的内容),而且我还缺少如何声明类型,这是我的示例(现在一切都应该很好,之前我忘记更改文件了,在我的应用程序中,我确实有了正确的扩展名,现在使用您的解决方案,它可以工作了),这很难在注释中回答。我在sandbox对您的代码进行了一些调整。希望你能跟上他们。谢谢你,是的,我有点理解,但我觉得总是设置类型是一个很大的痛苦。它比任何帮助都需要更多的额外工作:/