每当我试图在TypeScript环境中向全局nodejs全局名称空间添加一个函数时,我就会得到这个错误。
元素隐式具有“任意”类型,因为‘type an’没有索引签名。
声明全局命名空间
declare global {
namespace NodeJS {
interface Global {
signin(): string[]
}
}
}所以如果我试试这个
global.signin = () => {}它返回一个
元素隐式具有“任意”类型,因为‘type an’没有索引签名。
发布于 2021-09-19 08:33:12
在我自己的例子中,我直到后来才意识到我声明的全局名称空间是区分大小写的。
而不是这个。在我的问题被编辑之前是namespace NODEJS
declare global {
namespace NODEJS {
interface Global {
signin(): string[]
}
}
}应该是这样的
declare global {
namespace NodeJS {
interface Global {
signin(): string[]
}
}
}注意NODEJS and NodeJS。在我做了这些修改之后,打字本就没问题了,它的工作方式和我所期望的一样。
发布于 2021-09-18 01:39:39
我遇到了类似的问题,我发现节点的全局类型是最近变了-;现在您可以通过以下操作来覆盖它们:
// global.d.ts
declare global {
function someFunction(): string;
var someVariable: string;
}注意:这将不适用于let或const,您必须使用var。
// index.ts
global.someFunction = () => "some value";
global.someVariable = "some value";发布于 2022-02-01 05:31:17
下面是Node v16的一个示例
// globals.d.ts
declare module globalThis {
var signin: () => string[];
}https://stackoverflow.com/questions/68481686
复制相似问题