2
我正在嘗試定義反應模塊的類型,react-input-autosize
,用於打字稿項目。該模塊沒有現成的類型。定義類型描述npm反應模塊
我添加了一個目錄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正確導入。
根據你的建議,我得到錯誤TS2497:模塊'react-input-autosize''解析爲非模塊實體,無法使用此構造導入。 –
如果我將'AutosizeInput'類標記爲'export default',那麼編譯器不會抱怨,但我不能在類中實例化這個類,因爲這個符號顯然是空的。這意味着無論什麼原因,我都可以使類型工作,但是然後導入不會在運行時加載類... –