ATH*_*HER 3 rxjs angularjs typescript
我在 ASP.NET 5 应用程序中使用带有类型脚本的 Angular 1.4 和 RXJS。我有extremly wiered 问题。在运行时,我所有的接口属性都从驼峰式外壳转换为 Pascal Casing。为什么会发生这种情况以及如何避免这种情况?
请注意,我正在使用承诺从 web api 中获取数据,进行这样的调用
public GetDataFromAPI(request: Messages.IRequest): Observable<Messages.IResponse> {
let result: IPromise<Messages.IResponse>;
result = this.$http.post("http://api.domain.com/GetData", request).then(
(response: ng.IHttpPromiseCallbackArg<Messages.IResponse>) => {
return response.data;
}
);
return Observable.fromPromise(result).retry(3);
}
Run Code Online (Sandbox Code Playgroud)
这是我定义接口的方式
export interface IResponse{
firstName : string;
lastName : string;
age : number
}
Run Code Online (Sandbox Code Playgroud)
当我取回数据时,它的属性具有像这样的 CamelCasing,使它们可以访问。
response.data.FirstName
response.data.LastName
response.data.Age
Run Code Online (Sandbox Code Playgroud)
服务器很可能使用 PascalCasing,并且您定义了一个与服务器返回的数据不匹配的接口。TypeScript 不会将成员名从 PascalCase 转换为 camelCase,您必须编写自己的逻辑。它也不会在运行时抛出错误,因为接口会被擦除。我建议你打破 TypeScript 部分的命名约定,使用 PascalCase 字段,这样接口将与数据传输对象完全匹配。所以定义接口是这样的:
export interface IResponse {
FirstName : string;
LastName : string;
Age : number;
}
Run Code Online (Sandbox Code Playgroud)
并访问字段名称,如 data.FirstName
另一种方法是更改服务器实现,正如 Cleverguy25 建议的那样。
| 归档时间: |
|
| 查看次数: |
6987 次 |
| 最近记录: |