如何为具有默认导出的模块编写类型定义

时间:2017-12-20 10:00:12

标签: typescript definitelytyped type-definition storybook

我想为storybook-router编写一个类型定义。它不一定准确,因为这是一个次要的开发工具(即any是可以接受的),但我似乎甚至无法使其工作。

我想要表达的是:

import StoryRouter from 'storybook-router';

... StoryRouter是一个与StoryDecorator的接口@types/storybook__react匹配的函数。

我尝试了以下定义文件:

import { StoryDecorator } from '@storybook/react';

declare type StoryRouter = StoryDecorator;

export default StoryRouter;

不幸的是,这会导致以下错误:

  

TS7016:找不到模块&story;-story'的声明文件。 ' /< path snipped> /node_modules/storybook-router/dist/StoryRouter.js'隐含地有一个“任何”的类型。        如果它存在,请尝试npm install @types/storybook-router或添加包含declare module 'storybook-router';的新声明(.d.ts)文件

但是,如果我使用最后一个例子(declare module 'storybook-router'),我似乎无法弄清楚如何设置默认导出。

表示此类型的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

您不在.d.ts文件中导入,只需声明模块即可 通常,它看起来像这样(最简单的用例):

// storybook-router.d.ts
declare module 'storybook-router' {
    const StoryDecorator:any;
    export default StoryDecorator;
}