首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ServiceStackVS TypeScript Reference (.d.ts)错误--“无法找到名称‘Nullable’”。

问ServiceStackVS TypeScript Reference (.d.ts)错误--“无法找到名称‘Nullable’”。
EN

Stack Overflow用户
提问于 2016-02-23 02:21:51
回答 1查看 609关注 0票数 2

当使用TypeScript添加ServiceStackVS引用时,生成的.d.ts文件将为任何属于数组的请求DTO属性生成一个错误,即“无法找到名称‘Nullable’”。例如,我有一个请求DTO来查找事件:

代码语言:javascript
复制
public class FindEvents : QueryBase<Event> {
    ...

    [QueryField(Template = "{Field} BETWEEN {Value1} AND {Value2}", Field = "StartDateTime")]
    public DateTime?[] DateBetween { get; set; }

    [QueryField(Template = "MONTH({Field}) BETWEEN {Value1} AND {Value2}", Field = "StartDateTime")]
    public int?[] MonthBetween { get; set; }

    ...
}

此请求DTO生成的接口如下所示:

代码语言:javascript
复制
interface FindEvents extends QueryBase_1<Event>, IReturn<QueryResponse<Event>>
{
    ...

    DateBetween?: Nullable;
    MonthBetween?: Nullable;
    ...

}

生成的类型"Nullable“是导致错误的原因。

在服务中,我可以将DateTime?[]和int?[]更改为string[],这将分别生成DateBetween?: string[];和MonthBetween?: string[];。

这将在服务和TypeScript代码中起作用,但我不希望以这种方式更改服务。

有什么建议吗?可以更新ServiceStackVS以处理属于数组的请求DTO属性吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-23 02:40:26

数组在.NET中已经是可空引用类型,因此不需要指定它也包含可空值类型。

AutoQuery也不处理某些ValueTypes是null的数组,因此应该将数组更改为非空值类型,例如:

代码语言:javascript
复制
public class FindEvents : QueryBase<Event> 
{
    [QueryField(Template = "{Field} BETWEEN {Value1} AND {Value2}", Field = "StartDateTime")]
    public DateTime[] DateBetween { get; set; }

    [QueryField(Template = "MONTH({Field}) BETWEEN {Value1} AND {Value2}", Field = "StartDateTime")]
    public int[] MonthBetween { get; set; }
}

这最终提供了一个更好的强类型API,而属性仍然是可选的。

注意:在TypeScript中,DateTime作为字符串发出,以匹配它们在JSON中的发送方式。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35567642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档