कैसे टाइपप्रति में प्रकार की तरह enum बनाने के लिए?

वोट
84

मैं टाइपप्रति के लिए गूगल मैप्स एपीआई के लिए एक परिभाषाओं फाइल पर काम कर रहा हूँ।

और मैं प्रकार जैसे की तरह एक enum निर्धारित करने होंगे। google.maps.Animationजो दो गुण शामिल हैं: BOUNCEऔर DROP

यह कैसे टाइपप्रति में किया जाना चाहिए?

02/10/2012 को 10:29
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


6 जवाब

वोट
101

टाइपप्रति 0.9+ enums के लिए एक विनिर्देश है:

enum AnimationType {
    BOUNCE,
    DROP,
}

अंतिम अल्पविराम वैकल्पिक है।

02/10/2012 को 10:45
का स्रोत उपयोगकर्ता

वोट
56

टाइपप्रति 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;
02/10/2012 को 10:40
का स्रोत उपयोगकर्ता

वोट
19

अब यह भाषा का हिस्सा है। देखें 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();
17/08/2015 को 13:23
का स्रोत उपयोगकर्ता

वोट
14

बस एक और ध्यान दें कि आप निम्नलिखित के साथ एक आईडी / स्ट्रिंग enum कर सकते हैं:

class EnumyObjects{
    public static BOUNCE={str:"Bounce",id:1};
    public static DROP={str:"Drop",id:2};
    public static FALL={str:"Fall",id:3};


}
05/10/2012 को 00:29
का स्रोत उपयोगकर्ता

वोट
6

अपडेट :

@ 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!
22/11/2016 को 11:30
का स्रोत उपयोगकर्ता

वोट
1

टाइपप्रति में Enums:

Enums टाइपप्रति भाषा में डाल रहे हैं नामित स्थिरांकों का एक सेट को परिभाषित करने के लिए। का उपयोग करते हुए enums हमारे जीवन को आसान बना सकते हैं। इस का कारण यह है कि इन स्थिरांक अक्सर मूल्य जो enum का प्रतिनिधित्व करता है की तुलना में पढ़ने में आसान कर रहे हैं।

एक enum बनाना:

enum Direction {
    Up = 1,
    Down,
    Left,
    Right,
}

टाइपप्रति डॉक्स से इस उदाहरण बहुत अच्छी तरह से कैसे enums काम बताते हैं। सूचना है कि हमारी पहली enum मूल्य (अप) के साथ 1. सभी संख्या enum के निम्नलिखित सदस्यों को आरंभ नहीं हो जाता तब कर रहे हैं की संख्या बढ़ ऑटो यह मान से (यानी नीचे = 2, वाम = 3, सही = 4)। हम 1 के साथ पहली मूल्य को प्रारंभ नहीं किया, तो enum 0 पर शुरू हुई और फिर ऑटो वेतन वृद्धि (यानी नीचे = 1, वाम = 2, सही = 3) होगा।

एक enum का उपयोग करना:

हम निम्नलिखित तरीके से enum के मूल्यों का उपयोग कर सकते हैं:

Direction.Up;     // first the enum name, then the dot operator followed by the enum value
Direction.Down;

ध्यान दें कि इस तरह से हम बहुत कुछ कर रहे हैं वर्णनात्मक तरह से हम अपने कोड लिखें। Enums मूल रूप से उपयोग करने से हमें रोकने के जादू संख्या (संख्या जो कुछ इकाई का प्रतिनिधित्व करते हैं, क्योंकि प्रोग्रामर एक निश्चित संदर्भ में उन्हें एक अर्थ दिया गया है)। जादू संख्या ऐसा निम्न कारणों से खराब हैं:

  1. हम कठिन सोचने की जरूरत है, हम पहले से पहले हम अपने कोड के बारे में कारण कर सकते हैं एक इकाई के लिए संख्या का अनुवाद करने की जरूरत है।
  2. हम एक लंबे समय के बाद हमारे कोड की समीक्षा, या अन्य प्रोग्रामर हमारे कोड की समीक्षा करते हैं, तो वे आवश्यक रूप से नहीं पता है कि इन नंबरों के साथ होती है।
15/11/2018 को 21:00
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more