在尝试在其他地方发布的建议后,我发现自己无法运行使用无类型NPM模块的打字稿项目.下面是一个最小的例子和我尝试的步骤.
对于这个最小的例子,我们假装lodash没有现有的类型定义.因此,我们将忽略该包@types/lodash并尝试手动将其打包文件添加lodash.d.ts到我们的项目中.
文件夹结构
接下来,文件.
文件 foo.ts
///<reference path="../typings/custom/lodash.d.ts" />
import * as lodash from 'lodash';
console.log('Weeee');
Run Code Online (Sandbox Code Playgroud)
文件lodash.d.ts直接从原始@types/lodash包复制.
文件 index.d.ts
/// <reference path="custom/lodash.d.ts" />
/// <reference path="globals/lodash/index.d.ts" />
Run Code Online (Sandbox Code Playgroud)
文件 package.json
{
"name": "ts",
"version": "1.0.0",
"description": "",
"main": "index.js",
"typings": "./typings/index.d.ts",
"dependencies": {
"lodash": "^4.16.4"
},
"author": "",
"license": "ISC"
}
Run Code Online (Sandbox Code Playgroud)
文件 tsconfig.json
{
"compilerOptions": {
"target": …Run Code Online (Sandbox Code Playgroud) 我有一个用TypeScript编写的相当大的npm模块,它公开了许多类型,包括多个接口。现在,这些接口在根级别上都不都是有意义的,这就是为什么我想以一种可以嵌套的方式导入它们的方式来公开它们。
基本上,我正在寻找一种公开接口的方法,以便该模块的用户可以执行以下操作:
import { Foo } from 'my-module';
import { Bar } from 'my-module/sub-part';
Run Code Online (Sandbox Code Playgroud)
这可以在TypeScript中使用吗?如果可以,怎么办?什么不工作是这个代码在根index.ts文件:
export {
Foo,
{ Bar }
};
Run Code Online (Sandbox Code Playgroud)
请注意,这些.ts文件不在模块的根目录中,因此.js和.d.ts文件也不是。
我该如何解决?
PS:这与默认导出和命名导出无关,因为我想为导出多个嵌套级别的接口提供解决方案。