我在打字稿中写了一些代码。代码本身是一个角度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
工作正常。
我的错在哪里?我使用它们都没有导入,因为无法导入未导出的命名空间。
答案 0 :(得分:2)
之后,当我在其他一些文件中使用它们时,表达式Api.RestaurantMenuApiController说找不到命名空间Api,而代码Models.Customer工作正常。
Models
的文件是全局的,而带Api
的文件是import
语句的模块。
不要使用全局变量。