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

How do I write the type definition for a module with a default export

我想为 storybook-router 编写类型定义。它不需要那么准确,因为这是一个次要的开发工具(即 anys 是可以接受的),但我什至无法让它工作。

我想表达的是:

import StoryRouter from 'storybook-router';

...其中 StoryRouter 是与 @types/storybook__react.

中的接口 StoryDecorator 相匹配的函数

我尝试了以下定义文件:

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

declare type StoryRouter = StoryDecorator;

export default StoryRouter;

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

TS7016: Could not find a declaration file for module 'storybook-router'. '/<path snipped>/node_modules/storybook-router/dist/StoryRouter.js' implicitly has an 'any' type. Try npm install @types/storybook-router if it exists or add a new declaration (.d.ts) file containing declare module 'storybook-router';

但是,如果我使用最后一个示例 (declare module 'storybook-router'),我似乎不知道如何设置默认导出。

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

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

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