d.ts 中对服务堆栈打字稿客户端的日期支持



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

// @Required()
to: string;

在服务堆栈.cs文件中,此属性为日期时间。 任何想法为什么会这样以及我需要做什么,例如,它会将其转换为 Date 作为 Web API asp.net

与其他语言不同,TypeScript 中没有"反序列化步骤",即 TypeScript DTO 只定义了在原始 JSON 中返回的类型,由于 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);

或者,如果使用ss-utils.js则内置于ServiceStack中:

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

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

JsConfig.DateHandler = DateHandler.ISO8601;

它可以通过以下方式进行本机解析:

new Date(dateString)

同样,当配置为返回时:

JsConfig.DateHandler = DateHandler.UnixTimeMs;

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

new Date(unixTimeMs)

最新更新