2016-08-16 4 views
2

Ich möchte eine Schnittstelle verwenden, um die Datentypen festzulegen und sie dann in der Funktion aufzurufen, während Standardwert festgelegt wird, wenn sie nicht übergeben werden.Typescript - Schnittstellen-Literale an Funktionsparameter übergeben

Ich erhalte einen Fehler von nach Canvas in der Funktion. Kann ich es nicht so nennen?

// Options 
interface options { 
    canvas?: { 
     width: number; 
     height: number; 
     bgColor: string; 
    }; 
    brushes?: { 
     sizeSm: number; 
     sizeLg: number; 
    }; 
} 

function initialize(options {canvas.width = 700, brushes.sizeSm = 20}) { 
    // Do stuff 
} 

// Call function 
initialize({ 
    canvas: { 
     width: 820, 
     height: 450, 
     bgColor: '#fff' 
    }, 
    brushes: { 
     sizeSm: 10, 
     sizeLg: 20 
    }, 
}); 

Antwort

2

Dies sollte zunächst

interface options { 
    canvas?: { 
     width: number; 
     height?: number; 
     bgColor?: string; 
    }; 
    brushes?: { 
     sizeSm: number; 
     sizeLg?: number; 
    }; 
} 

function initialize(opts: options = {canvas : { width : 700}, brushes: {sizeSm : 20}}) { 
//function initialize(options {canvas.width = 700, brushes.sizeSm = 20}) { 
    // Do stuff 
} 

// Call function 
initialize({ 
    canvas: { 
     width: 820, 
     height: 450, 
     bgColor: '#fff' 
    }, 
    brushes: { 
     sizeSm: 10, 
     sizeLg: 20 
    }, 
}); 

arbeiten werden, sollte die Syntax der Optionen als Paramter eingestellt werden, um der Schnittstelle opts: options zu konsumieren.

Als nächstes, wenn wir eine default value haben wollen wollen, müssen wir es richtig weitergeben müssen:

function initialize(opts: options = {canvas : { width : 700}, brushes: {sizeSm : 20}}) { 

Und weil wir nur Breite und sizeSm eingestellt .. der Rest eingestellt werden optional (zB heigth?:number)

Wiedergabe mit diesen here

+0

Wow, das sieht aus wie das, was ich bin nach. Natürlich muss ich den Parameter auf die Schnittstelle einstellen. Eine Sache, die ich oben gemacht habe, und ich bekomme "Identifier erwartet" für die Werte, z. '{Breite: 700}'. –

+0

weil Sie diese 'Funktion initialisiert haben (Optionen {leinwand: {width: 700} ...' und das ist falsch .. weil wir die Schnittstelle als Typ vermissen. Wir brauchen das (wie in meiner Antwort) 'Funktion initialisiere (opts: options = {leinwand: {width: 700} '. die' opts' sind variable name, die ': optionen' sind type und nach' = 'können wir den voreingestellten wert sehen .. hoffe das hilft ein bisschen;) –

+1

Richtig, danke, das war sehr hilfreich. –

Verwandte Themen