Typescript 接口属性从驼峰案例改为 Pascal Case

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)

Tam*_*dus 5

服务器很可能使用 PascalCasing,并且您定义了一个与服务器返回的数据不匹配的接口。TypeScript 不会将成员名从 PascalCase 转换为 camelCase,您必须编写自己的逻辑。它也不会在运行时抛出错误,因为接口会被擦除。我建议你打破 TypeScript 部分的命名约定,使用 PascalCase 字段,这样接口将与数据传输对象完全匹配。所以定义接口是这样的:

export interface IResponse {
    FirstName : string;
    LastName : string;
    Age : number;
}
Run Code Online (Sandbox Code Playgroud)

并访问字段名称,如 data.FirstName

另一种方法是更改​​服务器实现,正如 Cleverguy25 建议的那样。