टाइपस्क्रिप्ट: एक इंटरफ़ेस संपत्ति दूसरे पर निर्भर करती है
क्या एक इंटरफ़ेस संपत्ति को दूसरे पर निर्भर करना संभव है?
उदाहरण के लिए मेरे पास:
const object = {
foo: 'hello',
bar: { hello: '123', },
}
और मैं यह सुनिश्चित करना चाहता हूं कि बार की कुंजी फू का मूल्य होना चाहिए ।
interface ObjectType = {
foo: string;
bar: { hello: string; } // instead of hardcoding have something like this? --> payload: { ValueOfFoo: string; }
}
धन्यवाद! :)
जवाब
5 AluanHaddad
आपको एक विशिष्ट स्ट्रिंग के प्रकार को पकड़ने के लिए एक सामान्य आवश्यकता है
interface ObjectType<K extends string> {
foo: K;
bar: { [P in K]: string };
}
फिर आप लिख सकते हैं
const object: ObjectType<'hello'> = {
foo: 'hello',
bar: { hello: '123', },
};
या, यदि आपके पास एक फ़ंक्शन है जो ऐसी वस्तु लेता है तो आप इंटरफ़ेस का उपयोग कर सकते हैं नियम को पूर्ण प्रकार की निष्कासन के साथ लागू करने के लिए
function useObject<K extends string>(o: ObjectType<K>) { }
useObject({
foo: 'hello',
bar: { hello: '113' } // works
});
useObject({
foo: 'hello',
bar: { world: '113' }
// ^^^^^−−−−−−−−−−−− error, `world` should be `hello`
});
खेल का मैदान लिंक