模块扩充/在非类型文件上定义类型
Posted
技术标签:
【中文标题】模块扩充/在非类型文件上定义类型【英文标题】: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 应该很容易,但我现在需要在本地解决它。
你知道如何输入这些无类型文件吗?
【问题讨论】:
【参考方案1】:您的declare module "react-dates/esm/utils/toISOMonthString'"
被视为模块扩充,因为它出现在另一个模块(具有*** ES6 导入或导出的文件)中。将声明移动到单独的文件中,以便将其视为模块的原始声明。 (这没有很好的记录;您可以阅读更多关于它的信息here。)
【讨论】:
我实际上找到了一个我可以分享的解决方案。首先我将声明移到另一个文件.d.ts
然后检查***.com/questions/42388217/… 我可以在另一个人的帮助下解决这个问题【参考方案2】:
一种可能的方法应该是使用以下内容创建一个.d.ts
文件:
declare module 'react-dates/esm/utils/toISOMonthString'
import MomentInput from 'moment';
export default function(date: MomentInput): string;
【讨论】:
以上是关于模块扩充/在非类型文件上定义类型的主要内容,如果未能解决你的问题,请参考以下文章
response的contentType的类型值Response.ContentType