d.ts中的日期支持,用于servicestack typescript客户端

时间:2017-05-30 10:03:49

标签: typescript servicestack

默认情况下,webstorm插件生成的servicestack typescript文件dtos.ts将所有日期属性设为字符串。

// @Required()
to: string;

在servicestack .cs文件中,此属性为DateTime。 任何想法为什么它是这样,我需要做什么,它将它转换为日期as asp.net web api例如

1 个答案:

答案 0 :(得分:6)

与其他语言不同,没有"反序列化步骤"在TypeScript中,即TypeScript DTO只定义raw JSON中返回的Type,因为JSON中没有Date类型,Date值以字符串形式返回它是使用JavaScript内置的JSON.parse()eval()转换为JS对象时的类型。

ServiceStack.Text中返回的默认WCF日期可以转换为:

function todate (s) { 
    return new Date(parseFloat(/Date\(([^)]+)\)/.exec(s)[1])); 
};

如果您使用servicestack-client npm包,可以通过以下方式解决:

import { todate } from "servicestack-client";
var date = todate(wcfDateString);

或者如果使用内置于ServiceStack的ss-utils.js

var date = $.ss.todate(wcfDateString);

如果您将ServiceStack.Text的默认序列化更改为使用ISO8601日期格式:

JsConfig.DateHandler = DateHandler.ISO8601;

可以使用以下内容进行本地解析:

new Date(dateString)

同样配置为返回时:

JsConfig.DateHandler = DateHandler.UnixTimeMs;

它也可以通过以下方式进行本地转换:

new Date(unixTimeMs)