簡體   English   中英

檢查打字稿中的聯合類型是數據類型還是字符串值

[英]Check whether union types in typescript are data types or string values

假設我們有一個泛型類型,它測試聯合類型並確定它們是字符串類型還是數據類型,因此如果任何類型是字符串值,它應該返回 'string' 或者如果聯合類型是原始類型,它應該返回 '原始':

type PrimitiveDataType = 'primitive';
type StringValue = 'string';

type Selector<T> = T extends string ? StringValue : PrimitiveDataType;

type StringCheck = Selector<'boo' | 'bar'>; // to be 'string'
type PrimitiveCheck = Selector<string | number>; // to be 'primitive'

在上面的例子中,'PrimitiveCheck' 類型產生"string" | "primitive" "string" | "primitive" ,但它應該是primitive的。

解決這個問題的最佳方法是什么?

type Selector<T> = Exclude<T, string> extends never ? 'string': 'primitive'; 

但是,如果您有多種類型要像這樣聲明,我不確定它的播放/縮放效果如何。

解釋

我們使用 Exclude 類型本質上是為了檢查聯合中是否存在除字符串以外的任何類型。 如果沒有,則類型為“字符串”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM