模块扩充/定义非类型化文件的类型

时间:2018-09-24 14:32:49

标签: typescript

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

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以解决该问题应该很容易,但是我现在需要在本地解决它。

您是否知道如何键入此未键入的文件?

2 个答案:

答案 0 :(得分:1)

您的# Empty string is always blank. defp blank?(""), do: true # If the string's first byte is a space, tab, newline, or carriage return, # we recursively check the remaining part of the string. defp blank?(<<h, t::binary>>) when h in ' \t\n\r', do: blank?(t) # Otherwise, it's not blank. defp blank?(_), do: false 被视为模块扩充,因为它出现在另一个模块(具有顶级ES6导入或导出的文件)中。将声明移到单独的文件中,以便将其视为模块的原始声明。 (此文档记录不充分;您可以here了解更多信息。)

答案 1 :(得分:0)

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

declare module 'react-dates/esm/utils/toISOMonthString' {
  import { MomentInput } from 'moment';

  export default function(date: MomentInput): string;
}