Lütfen aşağıdaki demoya bir göz atın.
interface Data
iç içe geçmiş veriler için bir şema tanımlar.
function check
bunun belirli bir kısmi alt ağacının olup olmadığını doğrular Data
yapı iyidir ve değilse derleme zamanı hatası verir (umarım az ya da çok ayrıntılı ve anlaşılabilir bir hata mesajıyla değil, sadece "... 'asla"yazmasına atanamaz).
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'
}
})