2014-09-08 13 views
5

La mia funzione è simile al seguente:Come definire un valore restituito da un oggetto Typescript per una funzione?

parseRange = (text) => { 
    var arr = []; 
    var lower = null; 
    var upper = null; 
    if (!text || text === "") { 
     lower = null; 
     upper = null; 
    } 
    else if (text.indexOf("-") > 0) { 
     arr = text.split("-"); 
     lower = +arr[0]; 
     upper = +arr[1]; 
    } 
    else { 
     lower = +text; 
     upper = null; 
    } 
    return { 
     lower: lower, 
     upper: upper 
    }; 
}; 

mi è familiare con il ritorno stringhe e numeri, ma come posso specificare il cambio è un oggetto con un parametro inferiore e superiore?

risposta

16
parseRange = (text: string) : { lower: number; upper: number; } => { 
    // ... 
    return { 
     lower: lower, 
     upper: upper 
    }; 
}; 

o

parseRange = <(text: string) : { lower: number; upper: number; }> ((text) => { 
    // ... 
    return { 
     lower: lower, 
     upper: upper 
    }; 
}); 

o

var parseRange : (text: string) => { lower: number; upper: number; } = (text) => { 
    // ... 
    return { 
     lower: lower, 
     upper: upper 
    }; 
}; 

o

parseRange = function (text: string) : { lower: number; upper: number; } { 
    // ... 
    return { 
     lower: lower, 
     upper: upper 
    }; 
}; 

o

function parseRange(text: string) : { lower: number; upper: number; } { 
    // ... 
    return { 
     lower: lower, 
     upper: upper 
    }; 
}; 

o

interface RangeResult { 
    lower: number; 
    upper: number; 
} 
function parseRange(text: string) : RangeResult { 
    // ... 
    return { 
     lower: lower, 
     upper: upper 
    }; 
}; 
+0

che copre praticamente ogni metodo per specificare questo tipo di ritorno! Molto completo – Fenton

+0

Grazie mille! – Alan2

4

dattiloscritto infers function return types, quindi questo si traduce in un errore di compilazione, senza dover specificare i tipi in modo esplicito:

var parseRange = (text) => { 
    return { 
     lower: 5, 
     upper: 6 
    }; 
}; 

var range = parseRange(""); 
range.foo; // compile error 

Live example che mostra l'errore:

The property 'foo' does not exist on value of type '{ lower: number; upper: number; }'.

Problemi correlati