- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
不幸的是,重现此代码的总代码会很长,所以我希望我的问题很明显,我可以轻松提供。如果需要,我会发布更完整的解决方案。
首先,我定义了一个接口(interface):
export interface ITest {
myDate: Date;
}
然后我创建了一个数组用于测试:
export const TEST: ITest[]=[{myDate: new Date(1995, 8, 1)}]
我使用 Angular2 中的一项服务公开这些内容,该服务从 angular2-in-memory-web-api
访问 InMemoryDbService。我调用它并获取数组的代码如下:
get(): Promise<ITest[]>{
return this.http.get(this.testUrl)
.toPromise()
.then(response => response.json().data as ITest[])
.catch(this.handleError);
}
...然后我将它带入我的组件:
this.testService.get().then(tests => {
this.tests = tests;
console.log("Date Type:"+typeof(this.tests[0].myDate));
});
一切正常,但问题是那里显示的 console.log
语句导致:
Date Type:string
其中的数据是正确的,因为我的日期保存的字符串是 1995-09-01T07:00:00.000Z
,但主要问题是 - 它不是 日期
是一个字符串
!在 VS Code 中,我什至获得了 toDateString
等方法的代码完成,但是当我执行它们时,我(当然)得到了 toDateString is not a function
。
我很确定问题出在 response => response.json().data as ITest[]
上,但为什么日期数据没有转换为实际的 日期
?我做错了,我明白了。我应该如何处理这个问题才能让我的对象获得我期望的类型?
最佳答案
您正在使用一个界面并且type assertion基本上告诉 TypeScript 该对象符合该接口(interface)。
但实际上情况并非如此,因为您正在转换的是一个 json 对象,其中“myDate”属性被表示为一个字符串。
使用类型断言不会以任何方式影响生成的 javascript 代码 - 您必须自己进行实际的类型转换。
之所以以字符串形式出现,是因为没有以 JSON 格式定义类型来表示 Date,因此服务器很可能只是发送 date.toString() 的结果。
您的一个选择是使用一个类来表示返回值并从 JSON 属性实例化一个对象,如下所示:
var response = JSON.parse(JSON.stringify({ myDate: new Date() }));
class Test {
constructor(json: { myDate: string }) {
this.myDate = new Date(json.myDate);
}
myDate: Date;
}
let test = new Test(response);
console.log("Type: " + typeof (test.myDate));
console.log("Value: " + test.myDate);
关于javascript - Typescript 接口(interface)中的日期在检查时实际上是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39925786/
编写一个仅用于集中其他接口(interface)的接口(interface)是好的做法还是坏的做法? interface InterfaceA : InterfaceB, InterfaceC { }
有没有一种方法可以确定具体类型从任意接口(interface)列表?我知道类型转换,但我想知道所有满意的接口(interface)。 例如,给定: type Mover interface { Mo
我正在尝试制作斐波那契堆。 (在我正在上的算法课中多次提到它们,我想检查一下。)我希望堆使用任何类型的节点,所以我定义了一个 Node 接口(interface): package node type
这是我的代码: type IA interface { FB() IB } type IB interface { Bar() string } type A struct {
示例 A: // pseudo code interface IFoo { void bar(); } class FooPlatformA : IFoo { void bar() {
合并它编译的 leppies 反馈 - 但 IMO 有一些缺点,我希望编译器强制每个子类定义它们自己的 Uri 属性。现在的代码: [] type UriUserControl() = inh
我正在构建一个项目,该项目从用户那里获取一个术语,然后执行谷歌搜索并返回一个 json 格式的标题列表。 我正在使用 serpwow API 来执行谷歌搜索并试图解析响应。 但是我收到的错误是: pa
我只想在其他接口(interface)中实现某些接口(interface),我不希望它们能够被类直接继承。 提前致谢! 最佳答案 您不能在 C# 中执行此操作 - 任何类都可以实现它有权访问的任何接口
我是 Go 的新手,还有一些我还没有掌握的技巧 例如,我有一个可以这样调用的函数: myVar.InitOperation("foo",Operator.EQUAL,"bar") myVar.Init
我有一个通用接口(interface)来描述对输出流的访问,如下所示: interface IOutput { function writeInteger(aValue:Int):Void;
我正在做一个项目,我想通过某种接口(interface)(最好是 USB)将光电探测器电路安装到计算机上。但是,由于我是新手,所以我不知道应该朝哪个方向处理这个问题。假设我有一个带有 USB 连接的光
背景 我正在尝试创建一个简单的应用程序,以真正理解DDD + TDD + etc的整个堆栈。我的目标是在运行时动态注入DAL存储库类。这让我 域和应用程序服务层可测试。我打算用“穷人的DI”来完成 现
在 Java 中,接口(interface)扩展接口(interface)是完全合法的。 UML 中的这种关系看起来像“扩展”关系(实线、闭合、未填充的箭头)还是“实现”关系(虚线、闭合、未填充的箭头
我想创建一个具有相等和比较函数默认实现的接口(interface)。 如果我从类型 IKeyable 中删除所有内容除了Key成员,只要我不添加默认实现,它就是一个有效的接口(interface)。从
COM 中的双接口(interface)是能够通过 DispInterface 或 VTable 方法访问的接口(interface)。 现在有人可以告诉我这两种方法之间到底有什么区别吗? 我认为 V
我有一个类方法,它返回一个可以迭代的员工列表。返回列表的最佳方式是什么?通常我只返回一个 ArrayList。然而,据我了解,界面更适合这种类型的操作。哪个是最好使用的界面?另外,为什么返回接口(in
我想从包装类外部实例化一个内部非静态接口(interface)。 这可能吗? 考虑以下代码: shared class AOuterClass() { Integer val = 3; shared
我为一个类编写了一个接口(interface),如下所示: public interface IGenericMultipleRepository { Lazy> addresses { ge
我是 UML 的初学者,现在我正在创建一个序列图,问题是我想根据用户输入实现 DAO 接口(interface)。如何在时序图中正确绘制以实现接口(interface)。 最佳答案 您不会在 SD 上
要使用 jsr 303 验证创建有条件验证的组,请将接口(interface)类传递给注释,如下所示: @NotEmpty (groups={UpdateValue.class}) 我有很多不同的接口
我是一名优秀的程序员,十分优秀!