वस्तु में टाइप करें परिभाषा टाइपप्रति में शाब्दिक

वोट
158

कक्षा में टाइपप्रति में यह उदाहरण के लिए, संपत्ति के लिए प्रकार की घोषणा करने के लिए संभव है:

class className{
    property : string;
};

मैं कैसे वस्तु में संपत्ति शाब्दिक के लिए प्रकार की घोषणा करने के कोड लिखना चाहिए? इस तरह के कोड संकलन नहीं है:

var obj = {
    property: string;
};

(मैं त्रुटि हो रही है - नाम 'स्ट्रिंग' वर्तमान क्षेत्र में मौजूद नहीं है)।

क्या मैं गलत कर रहा हूँ या यह एक बग है?

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


8 जवाब

वोट
226

आप बहुत करीब हैं, तो आप सिर्फ प्रतिस्थापित करने की आवश्यकता =एक साथ :। आप शाब्दिक एक वस्तु प्रकार (कल्पना खंड 3.5.3 देखें) या एक इंटरफ़ेस का उपयोग कर सकते हैं। एक वस्तु प्रकार शाब्दिक का उपयोग करना तुम्हारे पास क्या है के करीब है:

var obj: { property: string; } = { property: "foo" };

लेकिन क्या आप भी एक अंतरफलक का उपयोग कर सकते

interface MyObjLayout {
    property: string;
}

var obj: MyObjLayout = { property: "foo" };
08/10/2012 को 20:08
का स्रोत उपयोगकर्ता

वोट
131

इस संक्षिप्त बनाने के लिए (इच्छित प्रकार के लिए अशक्त कास्टिंग द्वारा) डाली ऑपरेटर का प्रयोग करें।

var obj = {
    property: <string> null
};

एक लंबे समय तक उदाहरण:

var call = {
    hasStarted: <boolean> null,
    hasFinished: <boolean> null,
    id: <number> null,
};

यह दो भागों (एक प्रकार की घोषणा करने, दूसरी चूक घोषित करने के लिए) की तुलना में काफी बेहतर है:

var callVerbose: {
    hasStarted: boolean;
    hasFinished: boolean;
    id: number;
} = {
    hasStarted: null,
    hasFinished: null,
    id: null,
};

अद्यतन 2016/02/10 - TSX संभाल करने के लिए (धन्यवाद @Josh)

TSX के लिए ऑपरेटर के रूप में प्रयोग करें।

var obj = {
    property: null as string
};

एक लंबे समय तक उदाहरण:

var call = {
    hasStarted: null as boolean,
    hasFinished: null as boolean,
    id: null as number,
};
11/10/2012 को 05:50
का स्रोत उपयोगकर्ता

वोट
8

यदि आप एक प्रकार एनोटेशन लिखने की कोशिश कर रहे हैं, वाक्य रचना है:

var x: { property: string; } = ...;

आप एक वस्तु शाब्दिक लिखने की कोशिश कर रहे हैं, वाक्य रचना है:

var x = { property: 'hello' };

आपका कोड एक मूल्य स्थिति में एक प्रकार का नाम उपयोग करने के लिए कोशिश कर रहा है।

08/10/2012 को 20:08
का स्रोत उपयोगकर्ता

वोट
4

टाइपप्रति हम वस्तु तो घोषित कर रहे हैं

[पहुँच संशोधक] चर नाम: {// वस्तु की संरचना}

private Object:{Key1:string , Key2:number }
08/01/2017 को 15:05
का स्रोत उपयोगकर्ता

वोट
0
// Use ..

const Per = {
  name: 'HAMZA',
  age: 20,
  coords: {
    tele: '09',
    lan: '190'
  },
  setAge(age: Number): void {
    this.age = age;
  },
  getAge(): Number {
    return age;
  }
};
const { age, name }: { age: Number; name: String } = Per;
const {
  coords: { tele, lan }
}: { coords: { tele: String; lan: String } } = Per;

console.log(Per.getAge());
02/10/2019 को 18:56
का स्रोत उपयोगकर्ता

वोट
0

अपने कोड में:

var obj = {
  myProp: string;
};

आप वास्तव में एक वस्तु शाब्दिक बनाने और संपत्ति myProp चर स्ट्रिंग बताए जाते हैं। हालांकि इस बहुत बुरा व्यवहार वास्तव में वैध टीएस कोड होगा (इस का उपयोग नहीं करते!):

var string = 'A string';

var obj = {
  property: string
};

हालांकि, क्या आप चाहते हैं कि वस्तु शाब्दिक लिखा गया है। यह विभिन्न तरीकों से प्राप्त किया जा सकता है:

इंटरफेस:

interface myObj {
    property: string;
}

var obj: myObj = { property: "My string" };

कस्टम के प्रकार:

type myObjType = {
    property: string
};

var obj: myObjType = { property: "My string" };

कास्ट ऑपरेटर:

var obj = {
    myString: <string> 'hi',
    myNumber: <number> 132,
};

ऑब्जेक्ट प्रकार शाब्दिक:

var obj: { property: string; } = { property: "Mystring" };
05/08/2019 को 12:06
का स्रोत उपयोगकर्ता

वोट
0

कि कोई किसी के इस उल्लेख किया, लेकिन तुम सिर्फ नामक एक एकल इंटरफेस बना सकते हैं मैं हैरान हूँ ObjectLiteralइस तरह,:

interface ObjectLiteral {
  [key: string]: any;
}

तो फिर तुम इसे इस तरह का उपयोग करेंगे,:

let data: ObjectLiteral = {
  hello: "world",
  goodbye: 1,
  // ...
};

आप इस एकल इंटरफेस में कई बार फिर से उपयोग के रूप में आप चाहें तो कर सकते हैं।

सौभाग्य।

20/05/2019 को 11:56
का स्रोत उपयोगकर्ता

वोट
0

यदि आप एक के लिए typings जोड़ने की कोशिश कर रहे हैं destructured एक समारोह के लिए बहस में वस्तु शाब्दिक, उदाहरण के लिए, वाक्य रचना है:

function foo({ bar, baz }: { bar: boolean, baz: string }) {
  // ...
}

foo({ bar: true, baz: 'lorem ipsum' });
07/03/2019 को 01:22
का स्रोत उपयोगकर्ता

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