typescript - Cum să definești tipul de returnare al unei funcții pentru un obiect literal personalizat
Iată obiectul, care este returnat de o metodă într-o clasă:
public dbParameters() // HERE
{
return {
"values": this.valuesForDb,
"keys": this.keysForDb,
"numbers": this.numberOfValues,
}
}
Ați putea să-mi spuneți, vă rog, cum să definesc tipul de return al funcției, în acest caz? Sau poate că aceasta nu este metoda corectă și ar trebui să folosesc un alt tip în loc de literalul obiect?
Răspuns #1
O modalitate ar putea fi doar un mesaj, acel rezultat este un dicționar:
public dbParameters() : { [key: string]: any}
{
return {
"values": this.valuesForDb,
"keys": this.keysForDb,
"numbers": this.numberOfValues,
}
}
Celălalt ar putea folosi puțină interfață
export interface IResult {
values: any[];
keys: string[];
numbers: number[];
}
export class MyClass
{
public dbParameters() : IResult
{
return {
values: this.valuesForDb,
keys: this.keysForDb,
numbers: this.numberOfValues,
}
}
}
Cu interface avem un mare avantaj... poate fi reutilizat în multe locuri (declarație, utilizare...), deci acesta ar fi preferatul
Și, de asemenea, putem compune cea mai specifică setare a rezultatului proprietăților
export interface IValue {
name: string;
value: number;
}
export interface IResult {
values: IValue[];
keys: string[];
numbers: number[];
}
Joacă-te cu asta aici
