如何在 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
文件使用 export
或 import
时,它们将被视为 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;
我有一个带有变量声明的 d.ts 文件,如下所示:
declare var $: () => SomeValue;
而且效果很好,在其他地方我可以使用这个变量而无需导入。
但是,当我从另一个模块添加一些导入时,这个变量在其他代码中是不可见的。
import { SomeValue } from "./SomeModule";
declare var $: () => SomeValue;
这个需要什么语法?
您需要向变量添加“export”关键字。
export declare var $: () => SomeValue;
如果你想让这个变量只在同一个文件中可用,那么就没有必要添加“export”关键字。但是,如果你想在其他文件中使用它,那么你需要添加“export”关键字。
常数、函数和类也是如此。添加“导出”将使其可以被其他文件导入。
当 .d.ts
文件使用 export
或 import
时,它们将被视为 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;