首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试JavaScript对象文本是否具有与TypeScript类相同的属性?

如何测试JavaScript对象文本是否具有与TypeScript类相同的属性?
EN

Stack Overflow用户
提问于 2019-05-09 15:37:08
回答 1查看 231关注 0票数 2

目标

我想编写一个单元测试,以便在运行时验证JavaScript对象是否符合TypeScript类型。我正在寻找一种方法来做到这一点,让我可以描述类型一次,然后,然后它为TypeScript编译时检查和JavaScript运行时检查。解决方案必须允许嵌套类结构。

代码

因为一个代码示例值1000字.看“??”问题的根源是:

目标单元测试

代码语言:javascript
复制
it('object literal and TypeScript class should be compatible, () => {
  
  ??? psudo-code on line below ???  
  const isCompatible = (myLiteral ~has matching properties with~ MyClass)

  expect(isCompatible).toBeTrue();

});

JavaScript对象文本

代码语言:javascript
复制
var myLiteral = {
  entities: {
    users: {
      '1': { id: 1 },
      '2': { id: 2 }
    }
  }
}

类在TypeScript中定义

代码语言:javascript
复制
class MyClass {
    entities: Entities;
}

class Entities {
    users: { [key: string]: User };
}

class User {
    id: number;
}

背景

我正在使用正火器来规范一个对象。normalize方法的输出不是强类型的,因此需要使用as关键字将输出返回到强类型。这是一个潜在的点,将来的错误会在不知不觉中引入到代码基中。

我想编写单元测试来验证正常化的输出是否符合我在TypeScript中使用的已经定义的类型。

当前思想

TypeScript接口和类型在运行时不存在.但是,类可以,类型可以从类派生。我希望有办法利用这一事实来实现我的目标。或者还有另一种编码方式。但是,到目前为止,我一直找不到一个。或者说,我所做的这一切在某种程度上是错误的,或者我遗漏了一些显而易见的东西。对任何一种欢迎的反馈。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-09 17:05:06

项目打字稿Json模式从TS类生成JSON。这些可以在运行时用来验证JS对象的文字。

我使用这个库来验证我的API的输入并生成正常的响应(例如,输入MyClass对象缺少属性MyClass)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56063022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档