我正在尝试为现有的无状态 React 组件套件创建类型定义,这样我就可以自动生成文档并改进团队工具中的智能感知。
组件示例如下所示:
我的组件.js
import React from 'react';
export const MyComponent = ({ prop1, prop2, prop3 }) => (
<div>
{ prop1 ? prop2 : prop3 }
</div>
);
我希望我的类型定义为:
查看这个使用TypeScript创建React组件的示例,我发现了类型:< code>React。SFC。
我试着在我的定义中使用这个:
索引.d.ts
declare module "MyComponent" {
import React from 'react';
interface MyComponentProps {
prop1: boolean;
prop2?: string;
prop3?: string;
}
export const MyComponent = React.SFC<MyComponentProps>
}
但是我收到预期的 linting 错误 [ts]'('。
我对TypeScript很陌生,显然我错过了一些东西,但是我找不到任何关于为无状态组件创建类型定义的文章。
编辑要明确的是,我不想在TypeScript中重写我的组件。我想为现有的ES6无状态组件创建一个类型定义文件(*.d.ts)。
我认为您需要<code>var MyComponent:React.SFC
您可能会考虑用typescript重写现有代码,看看tsc会生成什么样的定义。然后丢弃代码,只保留定义。
试试这个:
declare module "MyComponent" {
import React from 'react';
interface MyComponentProps {
prop1: boolean;
prop2?: string;
prop3?: string;
}
export const MyComponent: (props: MyComponentProps) => React.SFC<MyComponentProps>
}
来自官方 React 页面推荐 类型定义
经过大量的摆弄,我们已经确定了以下设置。
import React from 'react';
export interface MyComponentProps {
prop1: boolean;
prop2?: string;
prop3?: string;
}
declare const MyComponent: React.SFC<MyComponentProps>
export default MyComponent
这样做的灵感来自:https://github . com/definitely typed/definitely typed/blob/master/types/material-ui/index . d . ts
它与TypeDoc和VS Code的intellisense配合得很好。
我相信导出默认
是在这里破解智能感知的关键。
打字稿:2.8。3 @类型/反应:16.3。14 函数组件中的返回类型是,当我将组件声明为(React.StatelessComponent的别名)。 出现了三个错误: >
使用任意数量的属性定义任何类型的简单react函数组件时出现类型脚本错误,包括使用FC、ComponentWithChildren等... 这是一个最小的复制品 给了我错误 类型“({ className }: { className?:未定义;}) = 我不明白这就是我总是定义组件的方式。打字稿中有什么我不知道的新东西吗?
我试图在TypeScript中编写一个React无状态函数组件。请参见以下代码: 然而,编译器在const Link上给了我一个错误: src/components/Link。tsx(17,7):错误TS2322:Type“({view,className,params,queryParams,store,refresh,style,children,title,router}:LinkPr…”不
问题内容: 结合使用TypeScript和React,我们不再需要扩展,以使编译器知道所有react组件prop都可以有子代: 但是,无状态功能组件似乎并非如此: 发出编译错误: 错误:(102、17)TS2339:类型“ MyProps”上不存在属性“子级”。 我猜这是因为编译器实际上没有办法知道在props参数中将提供香草函数。 所以问题是我们应该如何在TypeScript的无状态功能组件中使
使用带有React的TypeScript,我们不再需要扩展,以便编译器知道所有React组件Props都可以有子级: 然而,无状态功能组件似乎不是这样: 发出编译错误: 错误:(102,17)TS2339:类型“MyProps”上不存在属性“children”。 我想这是因为编译器真的无法知道在props参数中会给出
在像C#这样的语言中,我可以声明一个列表列表,例如: 有没有类似的方法来在 TypeScript 中声明一个强类型数组数组?我尝试了以下方法,但都没有编译。