【发布时间】:2016-03-13 06:08:48
【问题描述】:
我正在使用带有 atom 1.7.5 版本的打字稿
我有一个声明文件 Provision.d.ts,其中包含以下声明
declare module Provision {
export enum ProvisionMode {
NOOP,
PRODUCTION,
DEVELOPMENT,
TEST,
DEFAULT
}
export interface ProvisionSettingsService {
setGlobalProvisionMode(arg0: ProvisionMode, arg1: string, back: Http.HttpDefaultCallback): void;
getGlobalProvisionMode(arg0: string, back: Http.HttpDefaultCallback): void;
setPathProvision(arg0: string, arg1: ProvisionMode, back: Http.HttpDefaultCallback): void;
getPathProvision(arg0: string, back: Http.HttpDefaultCallback): void;
}
}
然后是我的实现文件 Provision.ts
/// <reference path='./Provision.d.ts'/>
module ProvisionImpl{
export class ProvisionServiceCallback implements Http.Callback<Provision.ProvisionMode>{
onSuccess(data: Provision.ProvisionMode): void {
}
onError(): void {
var console: Console;
console.log("provision callback Error");
}
}
导出类 ProvisionServiceClient 实现 Provision.ProvisionSettingsService{
setGlobalProvisionMode(arg0: Provision.ProvisionMode, arg1: string, back : Http.HttpDefaultCallback): void{
/// ..... various implementations here
}
getGlobalProvisionMode(arg0: string , back : Http.HttpDefaultCallback): void{
/// ..... various implementations here
}
setPathProvision(arg0: string, arg1: Provision.ProvisionMode, back : Http.HttpDefaultCallback): void{
/// ..... various implementations here
}
getPathProvision(arg0: string, back : Http.HttpDefaultCallback): void{
/// ..... various implementations here
}
}
}
当我尝试在我的代码中使用上述实现时说 CountryService.ts
/// <reference path='./Provision.d.ts' />
/// <reference path='./Provision.ts' />
class App{
public switchOp() {
var client = new ProvisionImpl.ProvisionServiceClient();
var noop = Provision.ProvisionMode.NOOP ;
var prod = Provision.ProvisionMode.PRODUCTION ;
if (this.op){
client.setGlobalProvisionMode(noop , "dummy" , new Http.HttpDefaultCallback()) ;
}else{
client.setGlobalProvisionMode(prod , "dummy" , new Http.HttpDefaultCallback()) ;
}
}
}
new App().switchOp();
虽然我的代码编译时没有任何抱怨,但它总是给我一个错误
Uncaught ReferenceError: Provision is not defined
在这一行
var noop = Provision.ProvisionMode.NOOP ;
【问题讨论】:
-
你能用
export module试试吗,检查生成的javascript..它是否创建了一个名为Provision的变量并在该变量上创建枚举?? -
环境声明 (
*.d.ts) 主要用于声明 JS 中存在的东西,而不是实际提供它们。把它改成.ts源文件,我相信它会工作的。
标签: enums compilation compiler-errors typescript