![]() |
1
1
不,您还不能直接在TypeScript中这样做;对于您的特定用例,这是不可能的,因为没有正确的配置,任何编译器都无法理解您在特定时刻的特定意图。
不过,如果你想让魔法发生,有些库可以提供帮助。其中一个是所谓的
Type-aware-JSON
. 这允许您使用一组装饰器定义类,然后可以从JSON文件中对它们进行反序列化,然后使用相同的元数据进行反序列化。在您的特定场景中,当类来自第三方时,我看到的唯一选项是扩展所有类并用
然而,没有浪漫色彩的工厂功能会更有效率。编写一个递归函数来遍历每个对象并使其对每个属性作出反应;另一个解决方案是再次扩展每个类并使它们接受正常的JSON结构,同时仍然通过调用
|
![]() |
2
0
我不清楚JSON是从哪里获得的,但我假设是从一个服务调用获得的? 如果是这样,您很可能已经从服务返回了JSON。如果不是(xml?),您必须转换它。
所以当你打电话给
你提到了casting,所以我假设参数是JSON字符串?如果它来自一个服务,那么它应该只是一个具有相同形状的javascript对象(Dictionary)。
如果出于某种原因得到一个JSON字符串,则必须调用
不管怎样,我做了很多假设,希望我的回答有帮助。 |
![]() |
Zoddo · 属性在明确定义时可能为“未定义” 4 月前 |
![]() |
Sanitysign · 为什么{}类型可分配给对象类型? 4 月前 |
![]() |
lokiuucx · JS对象属性返回未定义,尽管对象属性应该有值 4 月前 |
![]() |
njord · 基于函数的Typescript返回类型 4 月前 |