斷言一個類型沒有品牌化
P粉323224129
2023-08-18 11:51:11
<p>如果我們定義一個類型品牌,例如:</p>
<pre class="brush:php;toolbar:false;">declare const nominalSymbol: unique symbol;
type Nominal<T extends string, U> = U & { [nominalSymbol]: T };</pre>
<p>有沒有方法可以定義一個型別<code>NotNominal<U></code>,如果<code>U</code>不是品牌類型,則解析為<code>U< /code>。 </p>
<pre class="brush:php;toolbar:false;">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`</pre>
<p><br /></p>