gpt4 book ai didi

typescript - 将字符串 "true"和 "false"从联合类型替换为 bool 值

转载 作者:行者123 更新时间:2023-12-05 03:29:00 24 4
gpt4 key购买 nike

我有一个由对象键构造的联合类型,它可能包含字符串、数字和 bool 键。

例子:

type Example = "true" | "semi" | "false"; 

我想要实现的是获得一个新类型,它将字符串 truefalse 替换为实际的 bool 值。

type Example = true | "semi" | false;

直接转换为 bool 值是行不通的,因为在某些情况下我既没有true 也没有false

这是我试过的

type ReplaceTrue<T> = Extract<T, "true"> extends never ? T : Exclude<T, "true"> | true;
type ReplaceFalse<T> = Extract<T, "false"> extends never ? T : Exclude<T, "false"> | false;

type PickMyType<T> = ReplaceBoolean<T, "true", true> | ReplaceBoolean<T, "false", false>

我也试过将 ReplaceTrueReplaceFalse 组合成一个类型,但我认为这会导致代码更难读。

但是,我觉得这些解决方案并不优雅,我想知道是否有任何其他方法可以替代它们。

最佳答案

使用映射类型:

type T1 = "true" | "semi" | "false";

type Mapping = { true: true; false: false };
type T2 = Mapping[T1 & keyof Mapping] | Exclude<T1, keyof Mapping>;
// T2 = boolean | "semi"

关于typescript - 将字符串 "true"和 "false"从联合类型替换为 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71092612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com