首页 文章

使用TypeScript在Visual Studio中使用其他commonjs模块的类型(接口)而不必导入该模块?

提问于
浏览
0

我试图简单地使用来自其他commonjs模块的类型(接口) . 我想知道是否有办法这样做,而不必每次只需要类型导入模块(没有实现)?

也是为了同一点 . 如何在没有使用"--module commonjs"进行编译的情况下在项目中使用commonjs声明的模块类型? (只是为了使用这些类型,我知道你可以做 var x = require('x') ,如果你不关心类型安全,但这违背了TypeScript的目的)

这似乎是一个有效的用例,因为人们可能希望创建一个没有实际实现的库...但是正如我目前所看到的那样,你必须 import x = require('x') 实际实现,即使我不需要它已经有定义文件 .

有没有办法告诉编译器它“只是存在”,类似于声明如何使用变量?

例:

假设我有file.ts,我没有编译任何模块设置(无):

/// <reference path="ExternalCommonJSModule.d.ts" />

export class A {

   public foo(bar: ITypeFromExternalCommonJSModule): number {
        return bar.x * 2;
   }

}

假设ExternalCommonJSModule.d.ts看起来像这样:

declare module "ExternalCommonJSModule" {

     export interface ITypeFromExternalCommonJSModule {
          x: number;
     }

}

(注意,这 doesn't 编译,因为file.ts isn 't compiled with --module commonjs and it doesn' t导入.d.ts的实现)

1 回答

  • 0

    我想知道是否有办法这样做,而不必每次只需要类型导入模块(没有实现)

    您可以将接口放在全局模块中,例如 globals.d.ts 然后您就可以在整个项目中使用它们而无需导入 .

    注意:只要您全局化,您就会严格限制代码的可共享性并使自己处于钻石版本依赖性问题 .

相关问题