Javascript 如何将导入的库用作类型属性

Javascript 如何将导入的库用作类型属性,javascript,typescript,dependency-injection,typescript-typings,Javascript,Typescript,Dependency Injection,Typescript Typings,我想声明一个类型,并将其属性之一设置为导入的库 这样做的最终目标是在一个地方定义我的平台的依赖项 简化一下,我有这样的想法: import * as crypto from 'crypto'; export type Dependencies = { ... (Some dependencies)... crypto: crypto; ... (Some more dependencies)... } function ({ crypto }: Dependencies, len

我想声明一个类型,并将其属性之一设置为导入的库

这样做的最终目标是在一个地方定义我的平台的依赖项

简化一下,我有这样的想法:

import * as crypto from 'crypto';

export type Dependencies = {
  ... (Some dependencies)...
  crypto: crypto;
  ... (Some more dependencies)...
}

function ({ crypto }: Dependencies, length: number) {
   return crypto
      .createHmac('sha256', Math.random() * 10 ** length + '')
      .digest('hex')
      .substring(0, length);
}

但是在定义我得到的类型时,
不能使用名称空间'crypto'作为类型。ts(2709)

我尝试过使用接口而不是类型,但遇到了同样的问题

归根结底,问题是:有没有办法定义接口或类型的X属性(或方法)应该是库的属性(或方法)

谢谢

试试看:

type CryptoModule = typeof import("crypto");
愚蠢的例子:

/**
*@param{CryptoModule}arg
*/
常量foo=(arg)=>42;
foo(“hi”);//类型为“hi”的参数不能分配给类型为“typeof import(“crypto”)的参数。ts(2345)
foo(加密);//好的

搜索已导入库的类型定义它已导入。。。更多的是关于如何使用它来设置类型/接口的属性/方法