如何为UMD库创建TypeScript定义文件(d.ts)

13

我正在开发库 surveyjs

它使用 gulp+webpack 来构建umd捆绑包。

我希望创建类型定义的捆绑包(或者可能只是多个d.ts文件),以便在TypeScript项目中使用。我想要像这样的东西:

import * as Survey from 'surveyjs';

关于Survey.*的所有内容在这里描述: https://github.com/dmitrykurmanov/surveyjs/blob/master/src/entries/ko.ts

我尝试过使用:github.com/SitePen/dts-generatorgithub.com/TypeStrong/dts-bundle,但都没有成功,请问有人能指导我正确的方向吗?


嗯...你可以在tscconfig.json中使用declaration标志配置tsc输出声明。 - toskv
1
最后我们使用dts-bundle成功实现了它。 - Dmitry Kurmanov
2个回答

6

您可以通过在 tsconfig.json 中添加 declaration 标志,要求 tsc 为您的代码生成声明文件。

在您的情况下,应该是这样的:

{
  "compilerOptions": {
    "target": "es5",
    "module": "es2015",
    "sourceMap": true,
    "noImplicitAny": false,
    "jsx": "react",
    "declaration": true
  },
//  "filesGlob": [
  //    "typings/index.d.ts"
  //  ], // TODO
  "include": [
    "typings/index.d.ts",
    "src/**/*"
  ],
  "exclude": [
    "node_modules",
    "**/*.spec.ts"
  ]
}

3
是的,问题出在webpack-stream的输出上。它只是js打包,但我如何获取d.ts文件呢?所以我要单独运行'gulp-typescript'编译器来生成d.ts文件。这不太好。 - Dmitry Kurmanov
这真的很大程度上取决于你的设置...如果你想要一个更具体的答案,你应该分享更多相关信息。 - toskv
1
另一个问题是bundle.d.ts。是否有可能创建它?我找到了两个项目github.com/TypeStrong/dts-bundlegithub.com/SitePen/dts-generator,但我无法成功配置它们。有人有成功的例子吗? - Dmitry Kurmanov
@tokv,好的,我会创建另一个关于webpack-stream和bundle.d.ts的问题。 - Dmitry Kurmanov

2
如toskv所提到的,你可以使用tsc生成.d.ts文件。问题在于编译器会为每个.ts文件创建多个声明文件。我在另一个项目中也遇到了同样的问题。我通过为webpack创建一个小插件来解决它,该插件合并tsc生成的.d.ts文件。
你可以在这里查看: https://www.npmjs.com/package/typescript-declaration-webpack-plugin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接