Typescript ';常数';环境上下文中的初始值设定项必须是字符串或数字文字

Typescript ';常数';环境上下文中的初始值设定项必须是字符串或数字文字,typescript,Typescript,我在typescript中有一个名称空间,如下所示: export declare namespace MyNamespace { const myFunc = (a:number) => 3; } 我的编译器抱怨函数: TS1254: A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference 试图告诉我的错误是什么?我不能将

我在typescript中有一个名称空间,如下所示:

export declare namespace MyNamespace {
    const myFunc = (a:number) => 3;
}
我的编译器抱怨函数:

TS1254: A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference

试图告诉我的错误是什么?我不能将函数作为命名空间中的常量?

导出声明命名空间MyNamespace{const myFunc:(a:number)=>3;}
“环境上下文”基本上是运行时不存在的内容。它是所有类型在编译时驻留的地方,稍后将被删除。如果您
声明
某个东西,它就在环境上下文中,因为这就是
声明
所做的-使某个东西只在编译时构造。有些部分直接讨论环境上下文。综上所述,这个错误基本上是想告诉你,你在用不应该有代码的东西编写代码(因为你添加了
declare
)。如果我用“=”替换为“:”,那么它可以解决像上面的func这样的简单问题,但更复杂的函数会遇到很多问题。例如const sizeResolver:(val=false)=>1;。。。。表示“参数初始值设定项只允许在函数或构造函数实现中使用。”通常,您可以删除名称空间。它们本身并没有被弃用,但模块系统基本上取代了它们。我看到很多问题都是由于人们对模块的使用不好造成的,我怀疑模块相关的文档不是很好。模块的使用越来越广泛,而且通常有更好的文档记录(由于使用越来越多),因此切换到这些模块将间接解决许多未来问题。