簡體   English   中英

打字稿高級類型:遵循預定義模式的字符串

[英]Typescript advanced type: string following a predefined pattern

我想在打字稿中設置特定的類型,該類型僅接受遵循特定模式的字符串。 例如,將其歸因於一個變量,該變量必須是以下格式的日期YYYY / MM / DD。

例子:

  type Date = "YYYY/MM/DD"; // obviously this type is dum and doesn't do the job, but you get the idea
  let date1:Date = "2019/12/31"  // OK
  let date2:Date = "01/12/2000"  // ERROR
  let date3:Date = "someString"  // ERROR
  let date4:Date = "3190/01/31"  // OK
  let date5:Date = 1528917532543 // ERROR
  let date6:Date = "20/12/31"    // ERROR
  let date7:Date = "2018/06/41"  // ERROR !!

這可能嗎?

對於這種情況(格式字符串,在類型級別強制執行), 正則表達式驗證的字符串類型存在未解決的問題。

但是,這還不足以滿足您的建議,因為使用正則表達式很難驗證日期值(例如,一天為41)。 還有另一個(封閉的)問題 ,它可能導致以下問題:

type FormattedDate (s: string) => new Date(s);

如果無法將字符串轉換為Date ,則會導致編譯器錯誤。

但是AFAICT目前尚不可能。

也許您可以為每種可能性生成字符串文字類型並將所有這些類型組合在一起?

暫無
暫無

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

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