TypeScript: properti antarmuka yang bergantung pada yang lain
apakah mungkin untuk mengetik properti antarmuka bergantung pada yang lain?
Misalnya saya punya:
const object = {
foo: 'hello',
bar: { hello: '123', },
}
Dan saya ingin memastikan bahwa key bar harus bernilai foo .
interface ObjectType = {
foo: string;
bar: { hello: string; } // instead of hardcoding have something like this? --> payload: { ValueOfFoo: string; }
}
Terima kasih! :)
Jawaban
5 AluanHaddad
Anda membutuhkan generik untuk menangkap jenis string tertentu
interface ObjectType<K extends string> {
foo: K;
bar: { [P in K]: string };
}
Kemudian Anda bisa menulis
const object: ObjectType<'hello'> = {
foo: 'hello',
bar: { hello: '123', },
};
Atau, jika Anda memiliki fungsi yang mengambil objek seperti itu, Anda dapat menggunakan antarmuka untuk menerapkan aturan dengan inferensi tipe lengkap
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`
});
Tautan taman bermain
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'