创建自定义打字文件

时间:2017-10-16 20:12:02

标签: node.js typescript

我刚刚创建了一个已发布的npm包,名为“Foo”。我试图在一个打字稿项目中使用它,但没有关于如何使用自定义类型声明模块的教程,我都很清楚。以下是npm包的关键部分:

news.ts

import { tdsRequest } from "../common/request";

function articles(uri) {
  return tdsRequest({ method: "GET" }, uri).then(returnData => console.log(returnData, "return data"));
}

export {
  articles,
};

main.ts(主要出口)

import * as news from "./services/news";

export default {
  news
};
使用npm包的typescript项目中的

import { news } from "Foo";

并在打字文件(Foo.d.ts)中我做了:

declare module "Foo" {
    export {
        news: Object,
    };
}

我收到以下错误:cannot find module newsCannot export 'Object'. Only local declarations can be exported from a module.

1 个答案:

答案 0 :(得分:2)

您正在混合默认导出和命名导出。

您可以执行默认导出样式 -

main.ts:

import * as news from "./services/news";

export default {
  news
};

ts项目导入:

 import foo from "Foo";
 const {news} = foo;

foo.d.ts:

declare module "Foo" {
    export default {
        news: Object,
    };
}

或者您可以执行命名导出

main.ts:

import * as news from "./services/news";

export {
  news
};

ts项目导入:

 import {news} from "Foo";

foo.d.ts:

declare module "Foo" {
    export const news: Object;
}

但更重要的是,您应该将declaration: true添加到您的npm库中compilerOptions的{​​{1}}。

这将为您生成tsconfig.json文件,并为您节省大量工作。然后,您需要在d.ts中添加一个名为package.json的字段,该字段将指向将为您生成的types文件。这将允许使用库+ typescript的任何项目自动使用生成的类型。