gpt4 book ai didi

typescript - 模块是否生成 typescript 代码 "Ambient"

转载 作者:搜寻专家 更新时间:2023-10-30 22:07:03 28 4
gpt4 key购买 nike

我正在尝试开始使用一些 typescript 。这是我的样子:

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

当我这样做时,我得到了这个错误:

An Implementation cannot be declared in ambient contexts.

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

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

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

我真的因为模块而收到此错误吗?如果不是,为什么我会收到此错误?

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

最佳答案

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

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

您也可以完全不使用 export,这更像是一个命名空间声明。如果您使用 AMD 或 CommonJS 或 ES2015 之类的东西进行模块声明,则需要 export

declare 当你想指定一个模块来包含接口(interface)之类的东西时使用。所以也许:

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 文件中经常看到它。

关于typescript - 模块是否生成 typescript 代码 "Ambient",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33792082/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com