我正在声明一个名为 getValue 的函数。然后我定义这个getValue。但我收到错误
error TS2384: Overload signatures must all be ambient or non-ambient。
环境过载特征是什么意思?非环境签名是什么意思?如何定义已声明的函数而不出现此错误?
declare function getValue(key:string):any;
function getValue(key:string):any{
return key;
}
Run Code Online (Sandbox Code Playgroud)
Ale*_*yne 19
declare意味着您从来不打算为该变量提供值。它对编译器说:
“我知道这个值不存在于您可以看到的代码中,但我向您保证它是在该范围可用的某个地方定义的,这就是它的类型”
declare因此,如果您还提供具体的值,则不需要。要么是declare函数,这意味着它是在打字稿编译器看不到的地方定义的,要么完全删除声明行并导出函数本身以在您想要的任何地方使用。
(其次,declare对于类型系统的学术探索很有用。您可以将declare变量与类型一起使用,而无需为其提供值,然后检查使用该变量的下游类型。这种用法绝对不适合生产代码。)
环境过载特征是什么意思?
“环境”意味着不存在任何实现。这是由declare关键字触发的。当您使用不同的参数类型/返回类型多次编写函数类型时,就会发生重载签名。通过在两行中提到该函数,打字稿将其解释为函数重载。
非环境签名是什么意思?
这意味着该功能可能存在一个实现。
如何定义已声明的函数而不出现此错误?
你不知道。如果要编写函数的实现,请不要使用declare该函数类型的关键字。
| 归档时间: |
|
| 查看次数: |
5394 次 |
| 最近记录: |