Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Nodejs Typescript type only包未正确导出所有类型_Node.js_Typescript_Typescript Typings - Fatal编程技术网

Node.js Nodejs Typescript type only包未正确导出所有类型

Node.js Nodejs Typescript type only包未正确导出所有类型,node.js,typescript,typescript-typings,Node.js,Typescript,Typescript Typings,我正在构建的包()是一个仅类型的包(我没有使用DefinitelyTyped,这个问题与DT无关) 包本质上只是一个文件(index.ts),其中包含各种导出类型,例如: export interface IYargsFailHandler { (msg: string, err: Error, inst: yargs.Argv, command: any): yargs.Argv; } 问题是,当我在客户端应用程序中使用它时,大多数类型都丢失了,intellisense显示的唯一类型是:

我正在构建的包()是一个仅类型的包(我没有使用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看起来正确,包含所有类型(在文件末尾有一个非常奇怪的定义,我无法解释):

我的typescript配置文件是:

{
  "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"
  ]
}
那么,为什么大多数类型都丢失了?我该如何更正它,谢谢

编辑:哎呀,我刚刚犯了一个非常愚蠢的错误。类型不应在结果.js文件中。唯一有效的js实际上是正在导出的强制PrimitiveStrarray CoercivePrimitiveStrarray

但这并不能解释为什么要导出的类型没有在clienbt端由intellisense显示

因此,在客户机上,我有:

在客户端文件中:

import * as xiberia from 'xiberia';
当我输入“xiberia”时,我希望看到所有类型都被导出,但我没有看到任何类型

我仔细阅读了三重斜杠指令,似乎它们不适合这种情况


那么,要使te intellisense按预期工作,我还需要什么配置设置呢?

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


我不明白为什么现在intellisense因为这些行为而起作用;也许有更了解情况的人可以发表评论。

我刚刚发现,intellisense不再工作了。VisualStudio代码在智能感知方面非常脆弱,这与最初吸引我加入typscript的所有关于该功能的疯狂说法相反。我想,不要相信那些炒作。
import * as xiberia from 'xiberia';