找不到TypeScript命名空间

时间:2017-11-24 20:30:49

标签: angular typescript

我在打字稿中写了一些代码。代码本身是一个角度2应用程序,但问题是关于打字稿本身。我有一些文件包含我的模型,如下图所示:

module Models { 
    export class Customer { 
        public Id: number;
        public Name: string;
        public Orders: Order[];
        public CustomerPhones: CustomerPhone[];
    }
}

和一些像这样的api客户服务:

import { Inject, Injectable } from '@angular/core';
import { Http } from '@angular/http';
module Api { 
    @Injectable()
    export class RestaurantMenuApiController {
        constructor(private http: Http, @Inject('BASE_URL') private baseUrl: string) {
        } 

        public getAllMenus = ( context:any, fieldNameToFill: string, beforeFieldFilling:(data:Models.RestaurantMenu[])=>void, afterFieldFilling:(data:Models.RestaurantMenu[])=>void, failureHandler:()=>void, errorHandler:(error:any)=>void) => {
            var promise = this.http.get(this.baseUrl + 'api/RestaurantMenuApi/getAllMenus');
            promise.subscribe(result => {
                if (result.ok) {
                    var data = <Models.RestaurantMenu[]>result.json();

                    if (beforeFieldFilling) {
                        beforeFieldFilling(data);
                    }

                    if(fieldNameToFill && fieldNameToFill != '')
                        context[fieldNameToFill] = data;

                    if (afterFieldFilling) {
                        afterFieldFilling(data);
                    }
                }
                else{
                    failureHandler();
                }
            }, error => {
                console.error("api call error: ",error);
                errorHandler(error);
                });
        }
    }
}

之后,当我在其他一些文件中使用它们时,表达式Api.RestaurantMenuApiController表示找不到命名空间Api,而代码Models.Customer工作正常。

我的错在哪里?我使用它们都没有导入,因为无法导入未导出的命名空间。

1 个答案:

答案 0 :(得分:2)

  

之后,当我在其他一些文件中使用它们时,表达式Api.RestaurantMenuApiController说找不到命名空间Api,而代码Models.Customer工作正常。

Models的文件是全局的,而带Api的文件是import语句的模块。

修复

不要使用全局变量。

更多