Mat*_*gyi 13 auto-generate node.js jsdoc typescript typescript-declarations
我正在尝试为使用 JSDoc 注释的类型和函数发出声明。这些对 TypeScript 用户很有用,从 JSDoc 生成它们意味着我们 SDK 开发人员的开销更少。
TypeScript 用户应该调用一个模块Apify
并从中访问我们的 SDK 功能。
import {Apify} from "apify";
const envs = Apify.getEnv();
...
Run Code Online (Sandbox Code Playgroud)
这不会发生,生成的index.d.ts
包含多个模块,每个 JS 源文件一个。
我的 JavaScript 库是客户端代码可见的单个模块。源代码由src/
目录中的多个文件组成:
src/index.js
src/actor.js
src/request.js
该index.js
文件重新导出在其他文件中定义的函数,因此它们可以被在 Node.js 中运行的客户端代码访问。
import { main, getEnv, call, callTask, ... } from './actor';
import Request from './request';
...
/**
* The following section describes all functions and properties provided by the `apify` package...
*
* @module Apify
*/
module.exports = {
main,
getEnv,
...
Request,
...
};
Run Code Online (Sandbox Code Playgroud)
在 中package.json
,文件build/index.js
被定义为入口点(在被 babel from 转译后src/index.js
):
{
"main": "build/index.js",
...
}
Run Code Online (Sandbox Code Playgroud)
我的tsconfig.json
是以下内容:
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"moduleResolution": "node",
"lib": [
"es2017",
"dom"
],
"allowJs": true,
"checkJs": false,
"noEmit": false,
"declaration": true,
"emitDeclarationOnly": true,
"strict": false,
"noImplicitThis": true,
"alwaysStrict": true,
"esModuleInterop": true,
"outFile": "types/index.d.ts"
},
"include": [
"src/index.js"
]
}
Run Code Online (Sandbox Code Playgroud)
运行后,tsc
我得到了我的types/index.d.ts
, 带有每个 JS 源文件的模块声明(客户端代码无法访问它们中的每一个)和一个空index
模块:
{
"main": "build/index.js",
...
}
Run Code Online (Sandbox Code Playgroud)
Lui*_*raz -1
您可以将其添加到索引上:
export {main, getEnv} from './actor';
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
626 次 |
最近记录: |