Sayım burada yardımcı olabilir:
enum YesNo {
YES,
NO
}
interface EnumObject {
[enumValue: number]: string;
}
function getEnumValues(e: EnumObject): string[] {
return Object.keys(e).map((i) => e[i]);
}
getEnumValues(YesNo); // ['YES', 'NO']
type
beyan Çalışma zamanı içinde kullanabilirsiniz herhangi bir sembol yaratmaz, sadece tip sisteminde bir takma ad oluşturur. Yani onu bir işlev argümanı olarak kullanmanın bir yolu yoktur.
Eğer YesNo
türü için dize değeri bulunan gerekiyorsa (çeteleler dize değerleri TS yet parçası olmayan beri), bir hile kullanabilirsiniz:
const YesNoEnum = {
Yes: 'Yes',
No: 'No'
};
function thatAcceptsYesNoValue(vale: keyof typeof YesNoEnum): void {}
Sonra mümkün olsun getEnumValues(YesNoEnum)
kullanabilirsiniz YesNoEnum
için değerler, yani ['Evet', 'Hayır']. Biraz çirkin ama işe yarayacaktı.
Dürüst olmak gerekirse, ben böyle sadece statik bir değişken ile giderdi:
type YesNo = 'yes' | 'no';
const YES_NO_VALUES: YesNo[] = ['yes', 'no'];
Teşekkür ederiz, ama bu bana yardımcı olmuyor. Dize tabanlı olmak için enum'a ihtiyacım var (muhtemelen Yazı Tip 2.4'te mümkün olacaktır). – Quali
@Quali Fuar noktası, durumu ele almak için bir yol ekledim. –
KirillDmitrenko'nun önerisini denediğimde. Dizim, olmayan değişmez değerlere de izin veriyor. Örneğin, “const YES_NO_VALUES: YesNo [] = ['yes', 'no', 'maybe'];' – jschank