我刚刚创建了一个已发布的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 news
和Cannot export 'Object'. Only local declarations can be exported from a module.
答案 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的任何项目自动使用生成的类型。