मैं टाइपप्रति के लिए गूगल मैप्स एपीआई के लिए एक परिभाषाओं फाइल पर काम कर रहा हूँ।
और मैं प्रकार जैसे की तरह एक enum निर्धारित करने होंगे। google.maps.Animationजो दो गुण शामिल हैं: BOUNCEऔर DROP।
यह कैसे टाइपप्रति में किया जाना चाहिए?
मैं टाइपप्रति के लिए गूगल मैप्स एपीआई के लिए एक परिभाषाओं फाइल पर काम कर रहा हूँ।
और मैं प्रकार जैसे की तरह एक enum निर्धारित करने होंगे। google.maps.Animationजो दो गुण शामिल हैं: BOUNCEऔर DROP।
यह कैसे टाइपप्रति में किया जाना चाहिए?
टाइपप्रति 0.9+ enums के लिए एक विनिर्देश है:
enum AnimationType {
BOUNCE,
DROP,
}
अंतिम अल्पविराम वैकल्पिक है।
टाइपप्रति 0.9 (वर्तमान में एक अल्फा रिलीज) के रूप में आप इस तरह enum परिभाषा का उपयोग कर सकते हैं:
enum TShirtSize {
Small,
Medium,
Large
}
var mySize = TShirtSize.Large;
डिफ़ॉल्ट रूप से, इन enumerations क्रमशः आवंटित किया जाएगा 0, 1 और 2। आप स्पष्ट रूप से इन नंबरों को सेट करना चाहते हैं, तो आप enum घोषणा के भाग के रूप ऐसा कर सकते हैं।
लिस्टिंग स्पष्ट सदस्यों के साथ 6.2 Enumerations
enum TShirtSize {
Small = 3,
Medium = 5,
Large = 8
}
var mySize = TShirtSize.Large;
इन उदाहरणों में से दोनों सीधे से बाहर उठा कर जावास्क्रिप्ट प्रोग्रामर के लिए टाइपप्रति ।
ध्यान दें कि यह 0.8 विनिर्देश के अलग है। 0.8 विनिर्देश इस तरह देखा - लेकिन यह के रूप में प्रयोगात्मक और बदलने की संभावना चिह्नित किया गया था, तो आप किसी भी पुराने कोड से अपडेट करना होगा:
अस्वीकरण - इस 0.8 उदाहरण टाइपप्रति संकलक के नए संस्करण में टूट किया जाएगा।
enum TShirtSize {
Small: 3,
Medium: 5,
Large: 8
}
var mySize = TShirtSize.Large;
अब यह भाषा का हिस्सा है। देखें TypeScriptLang.org> मूल प्रकार> enum इस पर प्रलेखन के लिए। कैसे इन enums का उपयोग करने पर प्रलेखन से एक अंश:
enum Color {Red, Green, Blue};
var c: Color = Color.Green;
मैनुअल समर्थन संख्या के साथ या:
enum Color {Red = 1, Green = 2, Blue = 4};
var c: Color = Color.Green;
आप यह भी उदाहरण के लिए का उपयोग करके वापस enum नाम लिए जा सकते हैं Color[2]।
यहाँ यह सब कैसे एक साथ चला जाता है की एक उदाहरण है:
module myModule {
export enum Color {Red, Green, Blue};
export class MyClass {
myColor: Color;
constructor() {
console.log(this.myColor);
this.myColor = Color.Blue;
console.log(this.myColor);
console.log(Color[this.myColor]);
}
}
}
var foo = new myModule.MyClass();
यह प्रवेश करेंगे:
undefined 2 Blue
कारण, यह लिखने के समय, टाइपप्रति खेल का मैदान के लिए इस कोड उत्पन्न करेगा:
var myModule;
(function (myModule) {
(function (Color) {
Color[Color["Red"] = 0] = "Red";
Color[Color["Green"] = 1] = "Green";
Color[Color["Blue"] = 2] = "Blue";
})(myModule.Color || (myModule.Color = {}));
var Color = myModule.Color;
;
var MyClass = (function () {
function MyClass() {
console.log(this.myColor);
this.myColor = Color.Blue;
console.log(this.myColor);
console.log(Color[this.myColor]);
}
return MyClass;
})();
myModule.MyClass = MyClass;
})(myModule || (myModule = {}));
var foo = new myModule.MyClass();
बस एक और ध्यान दें कि आप निम्नलिखित के साथ एक आईडी / स्ट्रिंग enum कर सकते हैं:
class EnumyObjects{
public static BOUNCE={str:"Bounce",id:1};
public static DROP={str:"Drop",id:2};
public static FALL={str:"Fall",id:3};
}
अपडेट :
@ IX3 द्वारा बताया गया है, टाइपप्रति 2.4 enum स्ट्रिंग्स के लिए समर्थन हासिल है।
देखें: टाइपप्रति में स्ट्रिंग मूल्यों के साथ एक enum बनाएं
मूल जवाब:
स्ट्रिंग सदस्य मानों के लिए, टाइपप्रति केवल enum सदस्य मूल्यों के रूप में संख्या की अनुमति देता है। लेकिन वहाँ कुछ समाधान / हैक्स आप लागू कर सकते हैं कर रहे हैं;
समाधान 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!
Enums टाइपप्रति भाषा में डाल रहे हैं नामित स्थिरांकों का एक सेट को परिभाषित करने के लिए। का उपयोग करते हुए enums हमारे जीवन को आसान बना सकते हैं। इस का कारण यह है कि इन स्थिरांक अक्सर मूल्य जो enum का प्रतिनिधित्व करता है की तुलना में पढ़ने में आसान कर रहे हैं।
enum Direction {
Up = 1,
Down,
Left,
Right,
}
टाइपप्रति डॉक्स से इस उदाहरण बहुत अच्छी तरह से कैसे enums काम बताते हैं। सूचना है कि हमारी पहली enum मूल्य (अप) के साथ 1. सभी संख्या enum के निम्नलिखित सदस्यों को आरंभ नहीं हो जाता तब कर रहे हैं की संख्या बढ़ ऑटो यह मान से (यानी नीचे = 2, वाम = 3, सही = 4)। हम 1 के साथ पहली मूल्य को प्रारंभ नहीं किया, तो enum 0 पर शुरू हुई और फिर ऑटो वेतन वृद्धि (यानी नीचे = 1, वाम = 2, सही = 3) होगा।
हम निम्नलिखित तरीके से enum के मूल्यों का उपयोग कर सकते हैं:
Direction.Up; // first the enum name, then the dot operator followed by the enum value
Direction.Down;
ध्यान दें कि इस तरह से हम बहुत कुछ कर रहे हैं वर्णनात्मक तरह से हम अपने कोड लिखें। Enums मूल रूप से उपयोग करने से हमें रोकने के जादू संख्या (संख्या जो कुछ इकाई का प्रतिनिधित्व करते हैं, क्योंकि प्रोग्रामर एक निश्चित संदर्भ में उन्हें एक अर्थ दिया गया है)। जादू संख्या ऐसा निम्न कारणों से खराब हैं: