是否可以重新导出现有的类型化模块并将其类型用于未类型化模块?
我要导入的库react-final-form-html5-validation
只是类型react-final-form
周围的一个小包装。
对此有任何选择吗?
我已经尝试了很多事情.......,但这看起来最有希望,但是react-final-form
没有声明名称空间,因此我不能像使用{{ 1}}。
React
project/index.d.ts
/// <reference types="react-final-form" />
//// <reference types="./node_modules/react-final-form/dist/index.d.ts" />
//// <reference path="./node_modules/react-final-form/dist/index.d.ts" />
//// <amd-dependency path="./node_modules/react-final-form/dist/index.d.ts" />
// importing resolves the types, but also turns it into a module, which in turn breaks it
// import * as RFF from react-final-form;
// import { FieldProps } from react-final-form;
// export * from react-final-form;
declare module 'react-final-form-html5-validation' {
var Field: React.ComponentType<FieldProps>
}
project/src/index.tsx
答案 0 :(得分:0)
我也遇到了同样的问题,而且我对打字稿的经验不是很丰富,所以我不确定这是否是正确处理此问题的正确方法,但是我认为我有一个可行的解决方案
我实现了这些类型以匹配react-final-form-html5-validation
文件中提供的流中的类型,这些文件基本上是FieldProps,但还有一些额外的道具可以解决错误消息。我只测试了一点,但是似乎在工作中。正如我所说,我对打字稿还很陌生,并且只有基本的了解。
declare module 'react-final-form-html5-validation' {
import { ComponentType } from 'react';
import { FieldProps } from 'react-final-form';
type Messages = {
badInput?: string;
patternMismatch?: string;
rangeOverflow?: string;
rangeUnderflow?: string;
stepMismatch?: string;
tooLong?: string;
tooShort?: string;
typeMismatch?: string;
valueMissing?: string;
};
export type Html5ValidationFieldProps = FieldProps<any> & Messages;
export const Field: ComponentType<Html5ValidationFieldProps>;
}
<FieldProps<any>
部分来自主要的react-final-form
,这似乎也是从那里导出Field元素的方式。