पर एक नजर है कृपया निम्नलिखित डेमो.
interface Data
को परिभाषित करता है एक स्कीमा के लिए नेस्टेड डेटा.
function check
करेगा मान्य है कि क्या एक दिए गए आंशिक सबट्री के इस Data
संरचना ठीक है और फेंक एक संकलन समय त्रुटि यदि नहीं, तो (उम्मीद है कि एक अधिक या कम विस्तृत और समझ में त्रुटि संदेश और नहीं बस "... है नहीं आबंटित टाइप करने के लिए 'कभी नहीं").
interface Data {
namespace1: {
keyA: string,
keyB: string
},
namespace2: {
keyC: string,
keyD: string
}
}
// This function's only purpose is to perform a compile-time check
// whether the given partial data is valid.
// Returns the first and only argument in case of success,
// otherwise a compile-time error will occur.
function check<??>(
partialData: ????
): ?????? {
return partialData
}
// Example 1 => okay
const validPartialData1 = check({
namespace1: {
keyB: 'b'
}
})
// Example 2 => okay
const validPartialData2 = check({
namespace1: {
keyB: 'b'
},
namespace2: {
keyC: 'c'
}
})
// Example 3 => okay
const validPartialData3 = check({})
// Example 4 => compile-time error!
const invalidPartialData1 = check({
namespace1: {
keyC: 'c'
}
})
// Example 5 => compile-time error!
const invalidPartialData2 = check({
xyz: {
keyA: 'a'
}
})