【发布时间】:2020-06-22 18:55:07
【问题描述】:
我正在构建的包 (https://github.com/plastikfan/xiberia/tree/develop) 是一个仅限类型的包(我没有使用 DefinedTyped,这个问题与 DT 无关)。
该包本质上只是一个文件(index.ts),其中包含各种导出类型,例如:
export interface IYargsFailHandler {
(msg: string, err: Error, inst: yargs.Argv, command: any): yargs.Argv;
}
问题是,当我在客户端应用程序中使用它时,大多数类型都丢失了,智能感知出现的唯一类型是:
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"
]
}
那么为什么大多数类型都丢失了,我该如何纠正呢,谢谢。
编辑:糟糕,我犯了一个非常愚蠢的错误。这些类型不应在生成的 .js 文件中。唯一有效的 js 确实是正在导出的 CoercivePrimitiveStrArrayCoercivePrimitiveStrArray。
但这并不能解释为什么正在导出的类型在客户端的智能感知中没有显示。
所以在客户端,这就是我所拥有的:
在客户端文件中:
import * as xiberia from 'xiberia';
当我输入“xiberia.”时,我希望看到所有正在导出的类型,但我没有看到任何类型。
我阅读了三斜杠指令,看来它们不适合这种情况。
那么我还需要什么其他配置设置才能让 te intellisense 按预期工作?
【问题讨论】:
标签: node.js typescript typescript-typings