我正在尝试定义反应模块react-input-autosize
的类型,以便在打字稿项目中使用。该模块没有现成的打字。
我向react-input-autosize
添加了一个目录typings/modules
。
然后我将文件index.d.ts
添加到新目录中。
我填写了新文件,理解了导入模块的结构(由打字稿编译器接受):
/// <reference path="../../globals/react/index.d.ts" />
/// <reference path="../../globals/react-dom/index.d.ts" />
declare module 'react-input-autosize' {
import * as React from "react"
import * as ReactDOM from "react-dom"
export interface AutosizeInputProps extends React.Props<any>{
className?: string,
defaultValue?: any,
inputClassName?: string,
inputStyle?: any,
minWidth?: number,
onKeyDown?: (x:any) => void,
onChange?: (x:any) => void,
placeholder?: string,
placeholderIsMinWidth?: boolean,
style?: any,
value?: string,
readOnly?: boolean,
autoFocus?: boolean,
type?: string
}
export class AutosizeInput extends React.Component<AutosizeInputProps, any> {
constructor(props? : AutosizeInputProps, context? : any);
greeting: string;
showGreeting(): void;
}
export default AutosizeInput;
}
此时导入项目中的模块开始成功,因为我没有得到“模块未找到”错误:
import AutosizeInput from 'react-input-autosize';
遗憾的是,实例化AutosizeInput
类现在在运行时不起作用,因为AutosizeInput
结果未定义。
在同一项目中的非打字稿文件中,import AutosizeInput from 'react-input-autosize';
仍然有效,因此在无类型时从npm正确导入模块。
答案 0 :(得分:0)
您default
导入:
import AutosizeInput from 'react-input-autosize';
将尝试导入default
导出。但模块react-input-autosize
没有默认导出。你可以尝试:
import * as AutosizeInput from 'react-input-autosize';
从导出中删除default
:
export = AutosizeInput;
希望它有所帮助。