reactjs - 在 typescript 中强制执行子组件的属性类型

标签 reactjs typescript

我试图在子组件中强制执行属性的类型。 由于 Child,我期待以下代码无法编译的 name未在内部正确键入属性 Parent在应用程序中,但它不显示编译器警告。

如果我有一个 <Parent<"a">> 有没有办法实现这个目标?它不允许 child 的 Prop 名称不等于“a”吗?

type ChildProps<T> = {
  name: T;
};

type parentProps<T extends string> = {
  children: React.ReactElement<ChildProps<T>>;
};

function Parent<T extends string>({ children }: parentProps<T>) {
  return <div>{children}</div>;
}

function Child({ name }: ChildProps<"b">) {
  return <div>{name}</div>;
}

function App() {
  return (
    <Parent<"a">>
      <Child name="b" />
    </Parent>
  );
}

最佳答案

你不能!这是 TS 令人沮丧的开放问题之一。请看this issue.

关于reactjs - 在 typescript 中强制执行子组件的属性类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74838116/

相关文章:

javascript - 如何在 typescript 中定义动态泛型约束

angularjs - Angular2 快速入门教程 - 用远程 http 数据替换模拟数据?

typescript - vue 3 中的 Prop 在类基组件中不可访问

javascript - 如何将数组项一个一个地添加到 DOM 中?

javascript - 使用三元运算符检查数组中的键是否存在

node.js - 在 Chrome 开发者工具中分析堆转储(内存泄漏)

reactjs - React 数据网格在 src/DataGrid.tsx :268 throwing a : TypeError: rows is undefined 处失败

javascript - 尝试过的二叉树示例将输出作为一个对象,我怎样才能将这个对象值放入一个数组中以处理进一步的问题

javascript - 由于滚动菜单消失,使用 flexbox 的固定元素在 iPhone 移动 Safari 上重新定位

javascript - typescript 中有什么方法可以使用对象作为键吗?