我很可能在这里错过了一些tsconfig选项。
我在做什么很简单:
我正在创建一个npm模块,例如:
export class HelloWorld {
constructor(public greeting: string){}
}
我的tsconfig是:
{
"compilerOptions": {
"target": "ES5",
"module": "commonjs",
"removeComments": true,
"noImplicitAny": false,
"preserveConstEnums": true,
"declaration": true,
"suppressImplicitAnyIndexErrors": true,
"outDir": "../js"
},
"filesGlob": [
"./**/*.ts",
"!./node_modules/**/*.ts"
]
}
当我的声明自动创建时,它看起来像这样:
export declare class HelloWorld {
greeting: string;
constructor(greeting: string);
}
但是在其他项目中实际安装npm软件包时,这并不能正常工作。当我导入包时我必须使用:
import hello = require("hello-world/js/index");
(例如)
我发现当我在模块declare module "hello-world" {...}
中包装声明文件时,我可以根据需要导入import hello = require("hello-world");
手动包装生成的定义文件不是一个选项,因为它一直在重写,是否有任何选项可以从package.json
获取包的名称并自动将定义包装在该模块中?
答案 0 :(得分:1)
确保您在typings
...
package.json
属性
{
"name": "hello-world",
"typings": "hello-world.d.ts",
...etc...
}
...或将您的定义文件更改为名为index.d.ts
。
然后在使用这些更改安装包之后,编译器将能够在您编写时解析它:
import hello = require("hello-world");