避免因缺少React组件道具而遭受打字稿投诉

时间:2019-02-10 09:24:47

标签: typescript

在带有jsconfig.json的javascript React项目中,仅对VSCode使用打字稿检查器,我需要disable/bypass对对象进行一些打字稿检查,例如missing property,并省略props

例如:

const Comp = ({ color, center, dark }) => <div> /* real code here */ </div>


<Comp color="blue" />   // TS check complaint on missing property: ts 2739

我希望能够使用一些TS检查和另外disable

我尝试,没有运气:

// global.d.ts
declare global {
  namespace JSX {
    type Element = string;
    interface ElementAttributesProperty {
    }
  }
}

2 个答案:

答案 0 :(得分:0)

问题是您尚未指定组件道具的签名。您可以通过声明一个接口来解决此问题

interface CompProps {
  color: string;
  center: boolean; // or whatever its type is
  dark: boolean;
}

const Comp = ({ color, center, dark }: CompProps) => <div>{/* real code here */}</div>

答案 1 :(得分:0)

如果您真的想避免为这些属性编写类型,则可以使用any

const Comp = ({ color, center, dark }: any) => <div> /* real code here */ </div>

当然,您需要禁用no-any规则,前提是您已启用该规则(应该这样做)。您可以通过将其放在文件的前面来禁用整个文件:

/* tslint:disable:no-any */

当然,这样做会丢失TypeScript在传递错误属性时向您发出警告的能力!但是至少可以清楚地知道丢失的类型在哪里,并且您随时可以稍后进行清理。

在我们的团队中,我们不鼓励人们使用any,而是鼓励他们习惯于为所有内容编写类型。起初确实让我们放慢了脚步,但是很快我们就习惯了。