ServiceStackVS TypeScript 参考 (.d.ts) 错误 - "Cannot find name 'Nullable'."
ServiceStackVS TypeScript Reference (.d.ts) Errors - "Cannot find name 'Nullable'."
使用 ServiceStackVS 添加 TypeScript 引用时,生成的 .d.ts 文件会为数组形式的任何请求 DTO 属性生成错误 "Cannot find name 'Nullable'."。例如,我有一个用于查找事件的请求 DTO:
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 生成的接口如下所示:
interface FindEvents extends QueryBase_1<Event>, IReturn<QueryResponse<Event>>
{
...
DateBetween?: Nullable;
MonthBetween?: Nullable;
...
}
生成的类型 "Nullable" 是导致错误的原因。
在服务中,我可以将DateTime?[]
和int?[]
更改为string[]
,这将分别生成DateBetween?: string[];
和MonthBetween?: string[];
。
这会起作用 - 在服务和 TypeScript 代码中 - 但我不希望以这种方式更改服务。
有什么建议吗?可以更新 ServiceStackVS 以处理作为数组的请求 DTO 属性吗?
谢谢。
数组在 .NET 中已经是可为 null 的引用类型,因此您无需指定它也包含可为 null 的值类型。
AutoQuery 也不处理某些值类型为 null
的数组,因此您应该将数组更改为不可为 null 的值类型,例如:
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,同时属性仍然是可选的。
Note: DateTime's are emitted as strings in TypeScript to match how they're sent in JSON.
使用 ServiceStackVS 添加 TypeScript 引用时,生成的 .d.ts 文件会为数组形式的任何请求 DTO 属性生成错误 "Cannot find name 'Nullable'."。例如,我有一个用于查找事件的请求 DTO:
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 生成的接口如下所示:
interface FindEvents extends QueryBase_1<Event>, IReturn<QueryResponse<Event>>
{
...
DateBetween?: Nullable;
MonthBetween?: Nullable;
...
}
生成的类型 "Nullable" 是导致错误的原因。
在服务中,我可以将DateTime?[]
和int?[]
更改为string[]
,这将分别生成DateBetween?: string[];
和MonthBetween?: string[];
。
这会起作用 - 在服务和 TypeScript 代码中 - 但我不希望以这种方式更改服务。
有什么建议吗?可以更新 ServiceStackVS 以处理作为数组的请求 DTO 属性吗?
谢谢。
数组在 .NET 中已经是可为 null 的引用类型,因此您无需指定它也包含可为 null 的值类型。
AutoQuery 也不处理某些值类型为 null
的数组,因此您应该将数组更改为不可为 null 的值类型,例如:
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,同时属性仍然是可选的。
Note: DateTime's are emitted as strings in TypeScript to match how they're sent in JSON.