2017-07-11 2 views
0

Ich lerne gerade TypeScript, aber ich weiß nicht, wie ich dieses Problem richtig lösen kann. Ich möchte ein Htmlelement als Argument für meine Styling Funktion wie diese gegeben, um Stil:Stil auf ein TypeScript Node-Element anwenden

function styleElement(unstyled: HTMLElement) { 
    const styled = unstyled.cloneNode(); // styleElement should be a pure function 
    styled.style = { opacity: 0 }; // TypeScript says: Property 'style' does not exist on type 'Node'. 

    return styled; 
} 

Ich habe die „Node“ Interface-Deklaration und der Stil-Eigenschaft überprüft fehlt. Soweit ich weiß, ist es in der W3C-Spezifikation beschrieben, dass der Knoten keine Stileigenschaft hat. Aber wie kann ich mein Problem mit dieser Einschränkung lösen?

Das Überschreiben der Stileigenschaft auf einem "HTMLElement" löst jedoch einen readonly Fehler aus, der auch seltsam ist.

Vielen Dank!

Antwort

1

können Sie werfen:

function styleElement(unstyled: HTMLElement) { 
    const styled = unstyled.cloneNode() as HTMLElement; 
    styled.style = { opacity: 0 }; // Now works properly. 
    // Although styled.style.opacity = 0; would have been preferable 

    return styled; 
}
+1

Sie nicht ein neues Objekt 'styled.style' zuweisen können. Es wird nicht funktionieren. 'style.style.opacity =" 0 "' ist wie es zugewiesen werden soll. – Saravana

+0

Ja, ich stehe auch vor diesem Fehler. Muss ich jede Eigenschaft von Stil in einer individuellen Zuordnung zuweisen? –

+2

@Ole Bläsing werfen Sie einen Blick auf Object.assign ... –

Verwandte Themen