अपडेट :
जैसा कि @ iX3 द्वारा उल्लेख किया गया है, टाइपस्क्रिप्ट 2.4 में एनम स्ट्रिंग्स के लिए समर्थन है।
देखें: टाइपस्क्रिप्ट में स्ट्रिंग मानों के साथ एक एनम बनाएं
मूल उत्तर:
स्ट्रिंग सदस्य मानों के लिए, टाइपस्क्रिप्ट केवल संख्या सदस्य मानों की अनुमति देता है। लेकिन कुछ समाधान / हैक हैं जिन्हें आप लागू कर सकते हैं;
समाधान 1:
से कॉपी किया गया: https://blog.rsuter.com/how-to-implement-an-enum-with-string-values-in-typescript/
एक सरल समाधान है: बस असाइन करने से पहले किसी भी स्ट्रिंग शाब्दिक कास्ट करें:
export enum Language {
English = <any>"English",
German = <any>"German",
French = <any>"French",
Italian = <any>"Italian"
}
समाधान 2:
से कॉपी किया गया: https://basarat.gitbooks.io/typescript/content/docs/types/literal-types.html
आप एक स्ट्रिंग शाब्दिक का उपयोग एक प्रकार के रूप में कर सकते हैं। उदाहरण के लिए:
let foo: 'Hello';
यहाँ हमने foo नामक एक वैरिएबल बनाया है जो केवल शाब्दिक मान 'हैलो' को ही असाइन करने की अनुमति देगा। यह नीचे प्रदर्शित किया गया है:
let foo: 'Hello';
foo = 'Bar'; // Error: "Bar" is not assignable to type "Hello"
वे अपने आप में बहुत उपयोगी नहीं हैं लेकिन एक शक्तिशाली (और उपयोगी) अमूर्त बनाने के लिए एक प्रकार के संघ में जोड़ा जा सकता है जैसे:
type CardinalDirection =
"North"
| "East"
| "South"
| "West";
function move(distance: number, direction: CardinalDirection) {
// ...
}
move(1,"North"); // Okay
move(1,"Nurth"); // Error!