【问题标题】:Why the error "Generic type 'Record' requires 2 type argument(s). ts(2314)" using this form of typing?为什么使用这种输入形式会出现错误“通用类型'记录'需要 2 个类型参数。ts(2314)”?
【发布时间】:2022-07-11 23:53:00
【问题描述】:

我正在尝试使用这种类型,但我不能:

type ROLES = "one" | "two"

type Users = {
    name: Record<[key in ROLES]?, User[]>;
};

因为它抛出:

Generic type 'Record' requires 2 type argument(s). ts(2314)

为什么?

【问题讨论】:

  • 我得到一个不同的错误。你能提供一个Playground 可以看到错误吗?你可能想要这个name: Partial&lt;Record&lt;ROLES, User[]&gt;&gt;
  • 错误信息说明了一切。您必须定义两个泛型,因此如果您希望密钥成为角色的密钥,则需要删除? 并使用Record&lt;ROLES, User[]&gt;。如果你想要可选的条目,你可以使用Partial&lt;Record&lt;ROLES, User[]&gt;&gt;
  • Record 的第一个参数必须解析为字符串,那么您要达到什么目的。
  • 院长的回答是。谢谢!请写一个答案,以便我接受。

标签: typescript


【解决方案1】:

错误消息说明了一切。您必须定义两个泛型,因此如果您希望键是 ROLES 的键,那么您需要删除 ? 并使用 Record&lt;ROLES, User[]&gt;。如果你想要可选条目,你可以使用Partial&lt;Record&lt;ROLES, User[]&gt;&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 2021-10-28
    • 2015-12-06
    • 2022-08-04
    • 1970-01-01
    • 2017-12-07
    • 2018-11-13
    相关资源
    最近更新 更多