仅Nodejs Typescript类型的软件包无法正确导出所有类型

问题描述 投票:0回答:1

我正在构建的程序包(https://github.com/plastikfan/xiberia/tree/develop)是仅类型的程序包(我没有使用DefinitelyTyped,并且此问题与DT无关。

该软件包本质上只是一个文件(index.ts),其中包含各种导出的类型,例如:

export interface IYargsFailHandler {
  (msg: string, err: Error, inst: yargs.Argv, command: any): yargs.Argv;
}

问题是,当我在客户端应用程序中使用此功能时,大多数类型都丢失了,并且唯一由intellisense出现的类型是:

export const CoercivePrimitiveStrArray = ['boolean', 'number', 'symbol'];

缺少所有其他类型。

当我查看相应的index.js文件时,它包含的全部是:

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.CoercivePrimitiveStrArray = ['boolean', 'number', 'symbol'];
// -----------------------------------------------------------------------------
//# sourceMappingURL=index.js.map

生成的index.d.ts看起来正确,并包含所有类型,(在文件末尾我无法解释一个非常奇怪的定义:]

export {};

我的打字稿配置文件是:

{
  "compilerOptions": {
    "allowJs": true,
    "alwaysStrict": true,
    "esModuleInterop": true,
    "module": "commonjs",
    "moduleResolution": "Node",
    "noImplicitAny": true,
    "sourceMap": true,
    "strictNullChecks": true,
    "target": "es5",
    "declaration": true,
    "declarationDir": "./dist",
    "outDir": "./dist",
    "diagnostics": true,
    "lib": [
      "es5",
      "es2015",
      "es6",
      "dom"
    ],
    "types": [
      "node", "yargs"
    ],
  },
  "include": [
    "./index.ts"
  ],
  "exclude": [
    "node_modules",
    "dist"
  ]
}

所以,为什么大多数类型都缺少,谢谢,我该如何纠正。

EDIT:糟糕,我犯了一个非常愚蠢的错误。这些类型不应位于生成的.js文件中。唯一有效的js实际上是正在导出的CoercivePrimitiveStrArrayCoercivePrimitiveStrArray。

但是这不能解释为什么在情报方面,Intellisense不会显示正在导出的类型。

所以在客户端上,这就是我所拥有的:

在客户端文件中:

import * as xiberia from 'xiberia';

当我键入“ xiberia。”时,我希望看到所有正在导出的类型,但是我什么也看不到。

我阅读了三斜杠指令,似乎它们不适用于这种情况。

所以我需要什么其他的设置才能使tetellisense正常工作?

node.js typescript typescript-typings
1个回答
0
投票

我通过尽可能简化包装来解决此问题。以前,我是在“ dist”文件夹中建立人工制品的,该文件夹已被广泛使用。我已经删除了此文件(这是一个简单的单个文件包,因此使用dist文件夹是多余的),只需将生成的index.d.ts,index.js和.map文件构建到根目录中。这还需要在package.json的'files'属性中明确指定这些文件(以确保在通过发布机制执行npm pack时,这些文件包含在生成的包tarball中)。

我不明白为什么现在由于这些动作,智能感知工作了;也许更了解的人可以发表评论。

© www.soinside.com 2019 - 2024. All rights reserved.