打字稿条件类型内部类型
Posted
技术标签:
【中文标题】打字稿条件类型内部类型【英文标题】:typescript conditional types inner types 【发布时间】:2022-01-22 13:53:06 【问题描述】:我定义了以下类型:
export type Limited =
multiple: boolean;
trunk: Limited['multiple'] extends true ? true : false;
;
我希望将trunk
属性限制为multiple
属性。当前方法使trunk
始终为false
。
我无法理解为什么会这样,以及如何解决它。
【问题讨论】:
【参考方案1】:您编写的类型说要根据Limited['multiple']
的类型进行类型计算。该类型是boolean
。 boolean
是否从 true
扩展而来?不,它没有(true
扩展自 boolean
,但不是相反)。结果,trunk
获得了 false
类型。
如果您要说multiple
和trunk
必须都是true
,或者都必须是false
,那么您可以这样做:
export type Limited =
multiple: true;
trunk: true;
|
multiple: false;
trunk: false;
或者您也可以使用泛型:
export type Limited<T extends boolean> =
multiple: T,
trunk: T
【讨论】:
以上是关于打字稿条件类型内部类型的主要内容,如果未能解决你的问题,请参考以下文章