如何在 TypeScript 中使用带有 "declare" 关键字的导入?

How to use import with "declare" keyword in TypeScript?

我有一个带有变量声明的 d.ts 文件,如下所示:

declare var $: () => SomeValue;

而且效果很好,在其他地方我可以使用这个变量而无需导入。

但是,当我从另一个模块添加一些导入时,这个变量在其他代码中是不可见的。

import { SomeValue } from "./SomeModule";
declare var $: () => SomeValue;

这个需要什么语法?

您需要向变量添加“export”关键字。

export declare var $: () => SomeValue;

如果你想让这个变量只在同一个文件中可用,那么就没有必要添加“export”关键字。但是,如果你想在其他文件中使用它,那么你需要添加“export”关键字。

常数、函数和类也是如此。添加“导出”将使其可以被其他文件导入。

.d.ts 文件使用 exportimport 时,它们将被视为 module 而不是环境 typings.

但是您仍然可以使用 declare global 添加到全局命名空间。这允许您扩充全局类型,甚至添加新的全局类型:

.d.ts

import { SomeValue } from "./SomeModule";

declare global {
    interface Window {
        $: () => SomeValue;
    }
    interface SomeGlobalInterface {
        x: number;
    }
}

.ts

// () => SomeValue
window.$

let value!: SomeGlobalInterface;
value.x;