API 返回的值未转换为日期
Value returned by API not converted to Date
在 Angular 7 应用程序上,我有以下模型:
public getTopPosts() {
return this.httpClient.get<TopPostsResponse>>('top-posts');
}
TopPostsResponse 在哪里:
export interface TopPostsResponse {
id: number;
title: string;
created: Date;
}
我在组件方法中调用服务:
getTopPosts(): Observable<PostModel[]> {
return this.postService.getTopPosts().pipe(
map((response: TopPostsResponse) => {
console.log(response.created);
console.log(response.created instanceof Date);
var created = new Date(response.created);
console.log(created);
console.log(created instanceof Date);
return {
id: response.id,
created: response.created,
title: response.title
};
}));
}
问题是当我检查 response.created 是否是一个 Date 时我得到 False:
console.log(response.created); >> 2019-01-24T13:03:10.123684
console.log(response.created instanceof Date); >> FALSE
var created = new Date(response.created);
console.log(created); >> Thu Jan 24 2019 13:03:10 GMT+0000 (WET)
console.log(created instanceof Date); >> TRUE
服务似乎没有将 API 返回的值转换为 Date 类型,但仍然是一个有效的 Date,因为我能够创建它的实例。
我错过了什么?
Typescript 不会自动将请求中的原始数据转换为某种类型。你将不得不自己解析它。
return {
id: response.id,
created: new Date(response.created),
title: response.title
};
Typescript 编译器在构建之前 运行 秒,而不是在 运行 时间内。所以它不知道 API 的响应中会出现什么。 Typescript 代码被转译,然后生成 javascript 代码,因此类型检查仅在您编写代码时发生。之后,当它really runs
时,它不会分析来自外部来源的数据类型。
在 Angular 7 应用程序上,我有以下模型:
public getTopPosts() {
return this.httpClient.get<TopPostsResponse>>('top-posts');
}
TopPostsResponse 在哪里:
export interface TopPostsResponse {
id: number;
title: string;
created: Date;
}
我在组件方法中调用服务:
getTopPosts(): Observable<PostModel[]> {
return this.postService.getTopPosts().pipe(
map((response: TopPostsResponse) => {
console.log(response.created);
console.log(response.created instanceof Date);
var created = new Date(response.created);
console.log(created);
console.log(created instanceof Date);
return {
id: response.id,
created: response.created,
title: response.title
};
}));
}
问题是当我检查 response.created 是否是一个 Date 时我得到 False:
console.log(response.created); >> 2019-01-24T13:03:10.123684
console.log(response.created instanceof Date); >> FALSE
var created = new Date(response.created);
console.log(created); >> Thu Jan 24 2019 13:03:10 GMT+0000 (WET)
console.log(created instanceof Date); >> TRUE
服务似乎没有将 API 返回的值转换为 Date 类型,但仍然是一个有效的 Date,因为我能够创建它的实例。
我错过了什么?
Typescript 不会自动将请求中的原始数据转换为某种类型。你将不得不自己解析它。
return {
id: response.id,
created: new Date(response.created),
title: response.title
};
Typescript 编译器在构建之前 运行 秒,而不是在 运行 时间内。所以它不知道 API 的响应中会出现什么。 Typescript 代码被转译,然后生成 javascript 代码,因此类型检查仅在您编写代码时发生。之后,当它really runs
时,它不会分析来自外部来源的数据类型。