javascript - Lag en kjede av metoder med TypeScript
Jeg har et array av land definert som en const CountriesList:
[{
name: "Afghanistan",
id: "4",
alpha2Code: "AF",
alpha3Code: "AFG",
numericCode: 4
},
...]
Jeg har en statisk klasse Countries som skal returnere land med forskjellige formater og filtrerte land fra konventet ovenfor.
export class Countries {
public static getCountries() {
return CountriesList;
}
public static getFilteredCountries(setName: string) {
return CountriesList
.filter(function (country, index) {
return customFilter(setName, country, index)
});
}
public static formatForSelectInput(items: ICountryIso3166[]) {
return items.map(function (country) {
return {
title: L(country.name),
data: country.id,
value: country.name
};
})
}
}
Nå, siden det er TypeScript og har sine egne regler, har jeg ingen anelse om hvordan jeg skal kjede metoder for å få det til å fungere slik:
var countryItems = Countries
.getFilteredCountries('test')
.formatForSelectInput();
Bør jeg lage et nytt objekt, slik at jeg ikke returnerer et rent array, men et array inne i et wrapper-objekt med respektive metoder, eller hvordan utfører jeg kjedingen riktig?
Vennligst gi råd.
Svar #1
Du vil kjede metoder, så du vil kalle dem på et objekt, ikke en statisk klasse. Så noe som å fjerne statisk fra Countries og endre koden din til
var countryItems = new Countries()
.getFilteredCountries('test')
.formatForSelectInput();
Hver metode der du ønsker å tillate kjeding bør da avsluttes med return this;. Du bør også erklære returtypene til metodene dine (til å være klassen Countries).
