typescript - 如果 JSX 标签不为空,为什么 TypeScript 会忽略 JSX 传播 props 的类型?
问题描述
我试图找出 TypeScript 是否真的类型检查 JSX 传播属性。我得到令人困惑的结果。这是我的小测试用例(在 TypeScript 操场上重现):
const badProps = {
badProp: "foo",
};
function Test1() {
return <div {...badProps} />;
}
function Test2() {
return <div {...badProps}> </div>;
}
观察:
Test1
正如我所料,是一个编译错误:Type '{ badProp: string; }' has no properties in common with type 'DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>'.
Test2
似乎忽略了 spread 属性的类型,并且默默地忽略了类型不匹配。
乍一看,我会得出结论,如果标签为空,TypeScript 只会检查传播属性,这很奇怪。
是什么导致了这种不一致?这种行为是有意的吗?
解决方案
推荐阅读
- php - 在 php slim 3 中列出所有带有组的路由
- c++ - 函数局部枚举声明与 ADL 的交互
- python - 更改 Django 的 cookie 域设置会如何导致零星的 CSRF 失败?
- nginx - nginx SSL 连接失败
- python - python嵌入C++,函数返回shared_ptr(pybind11/boost_python)
- r - 匹配所有出现的术语 R 的正则表达式函数
- facebook - 如何使用 Facebook 登录配置 ASP.NET 身份 - 严格重定向
- angular - 如何使用 lodash _.filter() 过滤 Firestore 集合?
- android - Android Things SIM700E LTE + GPS 驱动程序
- javascript - 如何在嵌套数组对象数组的条件下使用 While 循环?