在TypeScript中是否可以指定字符串格式?

20

我想知道是否有一种通过TypeScript检查字符串是否与某个模式匹配的方法。

我不想在运行时进行检查

//What I have now
public id: string; //can be whatever string 

//What I want to see
public id: IdType; //Some type?
id = '0000-0000-0000-0001'//valid
id = 'whatever'//invalid

那么这是一种定义字符串格式的方法吗?


使用正则表达式 - Maxim
我不确定你能否做到。Pattern 不是一种类型。但你可以添加验证器来检查该值。 - Rajesh
@Rajesh 但这将是一个运行时检查,对吧?我只是想在编译期间进行检查。 - S Panfilov
1
@SergeiPanfilov 是的。那将是一个运行时检查。想一想,仅凭类型,TS 如何知道值是多少呢?TS 可以检查类型,但值只能在运行时处理。因此,除非实际设置了值,否则无法检查它。 - Rajesh
@Rajesh 谢谢,伙计。 - S Panfilov
2
目前还不可能。只有一个suggestion - 这正是你要找的。 - Aleksey L.
1个回答

32

1
很遗憾,这不起作用,因为模板字面类型只允许具体的字面类型。https://www.typescriptlang.org/play?ts=4.1.0-beta#code/C4TwDgpgBAlgJgFXNAvFABgEgN4DsCuAtgEYQBOAvgLQ4EnnW1GmU17MPoCwAUAMYB7XAGdgsOAC5xSSFDQByAAzLFVFavVrlARnkBuIA - Aleksey L.
2
似乎在夜间构建中可以工作。可能正在路上 :) - Daniel Del Core
希望它是不错的! - Aleksey L.
这现在在4.1.5版本中可以运行:https://www.typescriptlang.org/play?ts=4.1.5#code/C4TwDgpgBAlgJgFXNAvFABgEgN4DsCuAtgEYQBOAvgLQ4EnnW1GmU17MPoCwAUAMYB7XAGdgsOAC5xSSFDQByAAzLFVFavVrlARnkBuIA - Artif3x
你如何使它更灵活?也许有更多的 '${number}' 组或更少?这里涉及到路径。 - Timar Ivo Batis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接