Typescript高级类型:遵循预定义模式的字符串

时间:2018-06-13 19:24:15

标签: typescript

我想在typescript中设置一个特定的类型,它只接受遵循特定模式的字符串。例如,要将其归因于一个变量,该变量必须是以下格式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 !!

这可能吗?

2 个答案:

答案 0 :(得分:1)

对于这种情况,regex-validated string types存在一个未解决的问题(格式化字符串,在类型级别强制执行)。

然而,这对于您所建议的内容来说还不够,因为使用正则表达式来验证日期值(例如41天)是很困难的。 another (closed) issue允许以下内容:

s = df2.groupby(['store'])['value'].agg('sum')
df1['value'] = df1['store'].map(s)

df1 

如果字符串无法转换为 customer store value 0 28 14 13 1 28 14 13 3 29 14 13 4 30 22 8 ,则会导致编译错误。

但AFAICT目前无法实现。

答案 1 :(得分:0)

也许你可以为每种可能性生成字符串文字类型并将它们组合在一起?