3

我可以像这样创建一个 TypeScript 接口,这将有助于静态类型:

interface IFoo {
   bar: string,
   baz: boolean
}

但我想知道是否有办法将此信息转换为 JS 并使用它来进行运行时验证?否则我可能不得不在两个不同的地方跟踪这些信息,这并不有趣。

任何人都知道这是否可能以某种方式?

它可能看起来像

const ifoo = {
     bar: 'String',
     baz: 'Boolean'
}

然后我可以使用这样的对象来进行运行时验证。

4

1 回答 1

2

是的!模块ts-interface-builder自动将 TypeScript 文件中定义的接口转换为类似于您建议的描述符,即:

import * as t from "ts-interface-checker";
export const IFoo = t.iface([], {
  "bar": "string",
  "baz": "boolean",
});

它与ts-interface-checker(作为单独的 npm 模块分发)结合使用,后者使用这些描述符进行运行时验证,并提供信息性错误消息。

于 2018-01-26T05:48:27.153 回答