【问题标题】: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

我无法理解为什么会这样,以及如何解决它。

【问题讨论】:

    标签: typescript typescript-typings


    【解决方案1】:

    您编写的类型说要根据Limited['multiple'] 的类型进行类型计算。该类型是booleanboolean 是否从 true 扩展而来?不,它没有(true 扩展自 boolean,但不是相反)。结果,trunk 获得了 false 类型。

    如果您要说multipletrunk 必须都是true,或者都必须是false,那么您可以这样做:

    export type Limited = {
      multiple: true;
      trunk: true;
    } | {
      multiple: false;
      trunk: false;
    }
    

    或者您也可以使用泛型:

    export type Limited<T extends boolean> = {
      multiple: T,
      trunk: T
    }
    

    【讨论】:

      猜你喜欢
      • 2019-05-03
      • 1970-01-01
      • 2020-06-25
      • 2021-09-18
      • 1970-01-01
      • 2021-09-05
      • 2022-01-18
      • 2021-11-09
      • 2022-07-07
      相关资源
      最近更新 更多