reactjs - 打字稿推断道具不适用于内在元素
问题描述
我有一个组件,它需要一个as
道具,应该从中推断出剩余的道具类型:
import React from 'react';
import s from './index.module.scss';
export type LayoutProps<As extends React.ComponentType<any> | keyof JSX.IntrinsicElements> = {
as: As;
} & React.ComponentProps<As>;
export function Layout<As extends React.ComponentType<any> | keyof JSX.IntrinsicElements>({
as: Component = 'div',
children,
className = '',
...props
}: LayoutProps<As>) {
return (
<Component className={`${s.layout} ${className}`} {...props}>
{children}
</Component>
);
}
这适用于标准 React 组件,例如以下会抛出错误Type 'number' is not assignable to type 'string | undefined'
:
import React from 'react';
import { Link } from 'react-router-dom';
const Example = () => <Layout as={Link} title={5}>Hello</Layout>;
然而,当它实际上应该抛出相同的错误时,这会起作用:
import React from 'react';
const Example = () => <Layout as="a" title={5}>Hello</Layout>;
我究竟做错了什么?
提前致谢!
解决方案
推荐阅读
- asp.net-core - 将 DateTime 传递给 ASP.net Core API(DateTime 模型绑定)
- visual-studio-2017 - VSTO 4:如何检测 TAB 可见/选择?
- wordpress - 自定义循环上的 Woocommerce 产品变化图像更改
- javascript - 如何在 DOM 中重新设置元素的样式?
- sql - 分区内每个序列的最大日期
- android - 活动结果后此 NavController 未知的导航目的地
- excel - 使用一个键基于多个条件寻求excel公式
- java - java使用代理api声明匿名类
- jenkins - 蚂蚁脚本执行
- gradle - 如何从源代码重新编译 gradle 依赖项?