2016-12-23 178 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