2016-09-30 2 views
3

Ich verwende die React Typdefinitionen für mein Projekt. Ich merke, es fehlt die Fokusmethode auf Elemente in der array returned by the refs property - so kann ich this example nicht funktionieren. Im Grunde sagt der Compiler: property 'focus' does not exist on type 'Component <any, any> | Element'. Dies liegt daran, Fokus existiert auf Typ HTMLElement nicht Element. Entweder sollte die Definitionsdatei den Rückgabetyp refs als | HTMLElement oder eine andere erweiterte Schnittstelle angeben, die die Fokusmethode enthält (ich bin mir nicht sicher, was das aber nicht der Punkt meiner Frage ist).Was mache ich, wenn eine TypeScript-Definitionsdatei, die ich verwende, keine einzige Definition enthält?

Meine Frage ist: Was soll ich jetzt tun? Ich stehe von der ständigen Entwicklung fest!

Ich weiß, ich könnte die Definitionsdatei abzweigen und selbst patchen, aber das scheint ein Problem zu sein, das ich in TypeScript immer wieder vorstelle und mich frage, ob es eine weniger umständliche Lösung gibt, die bedeutet, dass ich mich schnell bewegen kann. Es scheint, dass ich beim Erstellen meiner App immer wieder aus dem Gleis treten muss, um oft TypeScript-Patches zu erstellen.

Antwort

1

Die schnelle und schmutzige Lösung ist any zu Opt-out vom Typ Überprüfung dh

onSubmitEditing={(event) => { 
    (this.refs.SecondInput as any).focus(); 
}} 

Einreichen einer Pull-Anforderung auf DefinitelyTyped wäre ein schöner Zug ....

Anmerkung zu werfen : Sie können bei Bedarf "anspruchsvoller" werden, indem Sie "Doppelguss zu any"

+0

Was ist der Vorteil des Doppelgießens? – cubabit

+0

@cubabit. In diesem speziellen Fall keine. Allgemeiner gesagt, wenn Sie in "any" umwandeln, verzichten Sie auf eine Typprüfung für diese Variable. Mit Doppel-Casting können Sie dann wieder aussteigen und wieder für diese Variable tippen. –

Verwandte Themen