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

问题描述 投票:1回答:1

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

我想要代表的是:

import StoryRouter from 'storybook-router';

...其中StoryRouter是一个与StoryDecorator界面@types/storybook__react匹配的函数。

我尝试了以下定义文件:

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

declare type StoryRouter = StoryDecorator;

export default StoryRouter;

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

TS7016:找不到模块'storybook-router'的声明文件。 '/ <path snipped> /node_modules/storybook-router/dist/StoryRouter.js'隐式具有'any'类型。尝试使用npm install @types/storybook-router(如果存在)或添加包含declare module 'storybook-router';的新声明(.d.ts)文件

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

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

typescript definitelytyped type-definition storybook
1个回答
3
投票

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

// storybook-router.d.ts
declare module 'storybook-router' {
    const StoryDecorator:any;
    export default StoryDecorator;
}
© www.soinside.com 2019 - 2024. All rights reserved.