模块是否将打字稿代码设置为“Ambient”

时间:2015-11-18 22:56:15

标签: typescript

我正在尝试使用一些打字稿。这就是我的样子:

each

当我这样做时,我收到此错误:

  

无法在环境上下文中声明实现。

当我取出模块时,它可以正常工作:

declare module ServiceActions {
    export class MyClass{
        myFunction(shipmentId: number) : void {
            let test: number;
            test = 32;
        }
    }
}

我以为我读过模块就像在Typescript中的命名空间一样,但这似乎使它更像是一个抽象/接口概念。

我是否因为该模块而遇到此错误?如果没有,为什么我会遇到这个错误?

注意:我看到了这个question and answer但它没有回答我的问题。

1 个答案:

答案 0 :(得分:6)

在这种情况下,由于declare关键字,您处于“环境”上下文中。你想要的是在模块上使用export

export module ServiceActions {
    export class MyClass{
        myFunction(shipmentId: number) : void {
            let test: number;
            test = 32;
        }
    }
}

你也可以完全放弃export,这更像是命名空间声明。如果您使用AMD或CommonJS或ES2015之类的模块声明,则需要export

如果要指定模块以包含接口等内容,则使用

declare。所以也许:

declare module ServiceActions {
    interface MyInterface {
        myFunction(shipmentId: number) : void;
    }
}
module ServiceActions {
    export class MyClass implements MyInterface {
        myFunction(shipmentId: number) : void {
            let test: number;
            test = 32;
        }
    }
}

例如,您会在.d.ts个文件中看到很多内容。