代码之家  ›  专栏  ›  技术社区  ›  Estus Flask

声明子模块类型类似于模块

  •  0
  • Estus Flask  · 技术社区  · 7 年前

    假设有第三方模块 foo 没有打字机 foo/src ,而我需要导入一个子模式并以类似于主模块的方式键入它:

    索引.ts

    import * as foo from "foo/src";
    
    console.log(foo);
    

    自定义类型/foo-src.d.ts

    declare module "foo/src" {
      import * as foo from "foo";
      export = foo;
    }
    

    tsconfig.json配置

    {
      "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "strict": true,
        "baseUrl": "./",
        "paths": {
          "*" : ["custom_typings/*"]
        }
      },
      "files": [
        "index.ts"
      ]
    }
    

    我有个错误:

    找不到模块“foo/src”的声明文件…/node_modules/foo/src/index.js'隐式地具有“any”类型。

    尝试 npm install @types/foo 如果存在或添加一个新的声明(.dts)文件 declare module 'foo/src';

    为什么 自定义类型/foo-src.d.ts 忽略的声明文件 foo/src公司 导入?即使声明是错误的,也必须首先得到承认。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Matt McCutchen    7 年前

    如果启用 traceResolution 编译器选项,您将看到 custom_typings/foo-src.d.ts 在错误的路径上 baseUrl paths 设置:文件应位于 custom_typings/foo/src.d.ts custom_typings/foo/src/index.d.ts . 加载文件的其他可能方法包括将其添加到 files / include 或使用自定义 typeRoots ;你们两个都没有。