【问题标题】:Module augmentation / Defining types over non-typed files模块扩充/在非类型文件上定义类型
【发布时间】:2019-02-28 02:27:28
【问题描述】:

我需要为我当前的项目定义以下类型:

import toISOMonthString from 'react-dates/esm/utils/toISOMonthString';

问题是,我尝试了基本的:

declare module "react-dates/esm/utils/toISOMonthString'" {}

但我有错误:

[ts] Invalid module name in augmentation. Module 'react-dates/esm/utils/toISOMonthString' resolves to an untyped module at '.../node_modules/react-dates/esm/utils/toISOMonthString.js', which cannot be augmented.

为了解决这个问题进行 PR 应该很容易,但我现在需要在本地解决它。

你知道如何输入这些无类型文件吗?

【问题讨论】:

    标签: typescript


    【解决方案1】:

    您的declare module "react-dates/esm/utils/toISOMonthString'" {} 被视为模块扩充,因为它出现在另一个模块(具有顶级 ES6 导入或导出的文件)中。将声明移动到单独的文件中,以便将其视为模块的原始声明。 (这没有很好的记录;您可以阅读更多关于它的信息here。)

    【讨论】:

    • 我实际上找到了一个我可以分享的解决方案。首先我将声明移到另一个文件.d.ts 然后检查stackoverflow.com/questions/42388217/… 我可以在另一个人的帮助下解决这个问题
    【解决方案2】:

    一种可能的方法应该是使用以下内容创建一个.d.ts 文件:

    declare module 'react-dates/esm/utils/toISOMonthString' {
      import { MomentInput } from 'moment';
    
      export default function(date: MomentInput): string;
    }
    

    【讨论】:

      猜你喜欢
      • 2018-06-23
      • 1970-01-01
      • 2019-12-29
      • 1970-01-01
      • 2020-10-30
      • 2017-03-06
      • 1970-01-01
      • 2020-02-10
      • 1970-01-01
      相关资源
      最近更新 更多