2016-12-23 228 views
1

我正在構建一組服務,其中包含許多不同ID類型的服務。而不是全部叫他們nodeId: string,我想有一個。)鍵入和b。)格式驗證。所以我們最終得到了類似的東西打字稿中的字符串類型

export class LogicalId extends String { 
    constructor(value: string) { 
     if (!/somepattern/.exec(value) { 
      throw new ValidationError(...); 
     } 
     super(value); 
    } 
} 

有沒有更好的方法,會給我跨代碼的類型以及給予運行時檢查?

+0

您是否需要編譯時或運行時類型檢查? –

+0

我希望兩者都是理想的。 –

回答

1

使用正則表達式定義類型目前不是TypeScript的支持功能,但是it's a feature issue that's being discussed

暫時最好的解決方法是創建一個包裝類,而不是原始字符串。

+0

這正是我在OP中建議的嗎?沒有說過什麼優點,你怎麼有點贊成,我想知道? –

+1

@ap有時候人們會問他們在說什麼「這是我正在做的事情,有沒有更好的辦法?」有時候,答案明確地是*「你正在做的是唯一的方法(現在)」。我當然希望有一個更好的方法(例如像提案faraz鏈接的東西),但有時我們只是沒有得到我們的意願。 – Louis