具有通用条件道具的React.ComponentType

时间:2019-10-08 07:32:21

标签: reactjs typescript react-nativescript

我试图创建一个函数,该函数的返回类型为React.ComponentType-并返回React.forwardedRef-有条件地通用分配的道具。

我收到类型错误ts(2322)

enter image description here

enter image description here

无法复制以下代码:

import * as React from "react";
import {Observable, View } from "react-nativescript/dist/client/ElementRegistry";

interface A {
    someProp: string;
}
interface B {
    someOtherProp: string;
}
type AProps<T> = T extends View ? A : null;
type BProps<T> = T extends View ? B : null;

type Props<T> = AProps<T> & BProps<T>;

const create = <T extends Observable>(): React.ComponentType<Props<T>> => {
    return React.forwardRef(null);
}

我已将其隔离到T extends View ? A : nullT extends View ? B : null。如果我AProps = ABProps = B-或直接在React.ComponentType中使用接口,则类型检查错误将被删除。

我需要有条件地分配道具。如何在摆脱类型错误的同时拥有它?

0 个答案:

没有答案