如果我们定义一个类型品牌,例如:
declare const nominalSymbol: unique symbol;
type Nominal<T extends string, U> = U & { [nominalSymbol]: T };
是否有一种方法可以定义一个类型NotNominal<U>,如果U不是一个品牌类型,则解析为U。
declare const nominalSymbol: unique symbol;
type Nominal<T extends string, U> = U & { [nominalSymbol]: T };
type BrandedType = Nominal<'Address', string>;
type a = NotNominal<string> // 这应该是 `string`
type b = NotNominal<Address> // 这应该是 `never`
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
type NotNominal<U> = U extends { [nominalSymbol]: string } ? never : U