Typescript 为npm实用程序手动添加类型脚本键入

Typescript 为npm实用程序手动添加类型脚本键入,typescript,Typescript,我正在一个现有的JS项目中设置TypeScript,我正试图找出如何将打字添加到一个非类型化的npm模块中,因为我知道它会出现 这条线 从“foo”导入X 出错,找不到模块“foo” 在typings/modules中,我有一个foo文件夹,其中有一个index.d.ts文件,其中包含 declare module foo { export default class XXX{ } } 在父typings/index.d.ts中,我添加了 // 但还是什么都没有 我的tsco

我正在一个现有的JS项目中设置TypeScript,我正试图找出如何将打字添加到一个非类型化的npm模块中,因为我知道它会出现

这条线

从“foo”导入X

出错,找不到模块“foo”

typings/modules
中,我有一个
foo
文件夹,其中有一个index.d.ts文件,其中包含

declare module foo {
    export default class XXX{

    }
}
在父
typings/index.d.ts
中,我添加了

//

但还是什么都没有

我的tsconfig.json文件如下所示

{
    "compilerOptions": {
        "target": "esnext",
        "baseUrl": "./src",
        "jsx": "react",
        "allowSyntheticDefaultImports": true,
        "allowJs": true,
        "moduleResolution": "node",
        "module": "es2015",
        "experimentalDecorators": true,
        "lib": ["es2015", "dom"],
        "typeRoots" : ["./typings/modules", "./node_modules/@types"]
    },
    "include": [
        "./src/**/*.ts",
        "./src/**/*.tsx"
    ]
}

您必须用引号声明模块:

declare module "foo" {
    export default class XXX{

    }
}
看起来很疯狂?不带引号声明的模块实际上类似于名称空间。因此,实际上并不是在代码中声明模块

从:

“内部模块”现在是“名称空间”。“外部模块”现在是 简单的“模块”,与ECMAScript 2015的术语一致, (即模块X{等价于现在首选的名称空间X) {)


另请参见:

另加一条谢谢。我一不确定就马上测试并接受。