Ich versuche, die Typisierung für ein reaktives Modul, react-input-autosize
, für die Verwendung in einem Typoskript-Projekt zu definieren. Das Modul hat keine Readymades.Typisierung für npm reagieren Modul für Typoskript
Ich habe ein Verzeichnis react-input-autosize
zu typings/modules
hinzugefügt. Dann habe ich dem neuen Verzeichnis eine Datei index.d.ts
hinzugefügt. füllte ich die neue Datei mit meinem Verständnis der Struktur des eingeführten Moduls (die vom Typoskript Compiler akzeptiert wird):
/// <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;
}
An dieser Stelle das Modul in dem Projekt zu importieren begann im Sinne Erfolg, dass ich erhalten keine „Modul nicht gefunden“ Fehler mehr, indem Sie:
import AutosizeInput from 'react-input-autosize';
Instanziierungsanwendung die AutosizeInput
Klasse leider jetzt zur Laufzeit nicht funktioniert, wie AutosizeInput
Ergebnisse nicht definiert werden.
In einer Nicht-Typoskript-Datei innerhalb desselben Projekts funktioniert import AutosizeInput from 'react-input-autosize';
immer noch, daher wird das Modul korrekt aus npm importiert, wenn es nicht typisiert ist.
Mit Ihrem Vorschlag bekomme ich 'Fehler TS2497: Modul '' react-input-autosize '' aufgelöst zu einer Nicht-Modul-Entität und kann nicht mit diesem Konstrukt importiert werden.'. –
Wenn ich die Klasse 'AutosizeInput' als' export default' ankreuze, dann beschwert sich der Compiler nicht, aber ich kann die Klasse in react nicht instanziieren, da das Symbol scheinbar null ist. Das bedeutet, dass ich die Typings aus irgendeinem Grund zum Funktionieren bringen kann, aber dann importiere ich die Klasse nicht zur Laufzeit ... –