2017-05-30 51 views
1

默认情况下webstorm插件生成的servicestack typescript文件dtos.ts将所有日期属性设置为字符串。在d.ts中为服务栈打字稿客户端提供日期支持

// @Required() 
to: string; 

在servicestack .cs文件中此属性为DateTime。 任何想法,为什么它是如此,什么我需要做到这一点,将其转换为日期,例如asp.net网页API

回答

3

与其它语言不同,没有“反序列化工序”打字稿,即打字稿的DTO只是定义了在raw JSON中返回的类型,因为JSON中没有Date类型,所以Date值作为字符串返回,这是Type使用JavaScript的内置JSON.parse()eval()转换为JS对象时的值。

是在ServiceStack.Text返回默认WCF日期可以被转换:

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

或者,如果:

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

如果你使用哪一种servicestack-client NPM包可以解决使用内置于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) 

它也可以与本机转换