TypeScript: diğerine bağlı bir arayüz özelliği
diğerine bağlı bir arayüz özelliği yazmak mümkün müdür?
Örneğin:
const object = {
foo: 'hello',
bar: { hello: '123', },
}
Ve çubuğun anahtarının foo'nun değeri olduğundan emin olmak istiyorum .
interface ObjectType = {
foo: string;
bar: { hello: string; } // instead of hardcoding have something like this? --> payload: { ValueOfFoo: string; }
}
Teşekkürler! :)
Yanıtlar
5 AluanHaddad
Belirli bir dizenin türünü yakalamak için bir jeneriğe ihtiyacınız var
interface ObjectType<K extends string> {
foo: K;
bar: { [P in K]: string };
}
O zaman yazabilirsin
const object: ObjectType<'hello'> = {
foo: 'hello',
bar: { hello: '123', },
};
Veya, böyle bir nesneyi alan bir işleviniz varsa, kuralı tam tür çıkarımıyla zorlamak için arayüzü kullanabilirsiniz.
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`
});
Oyun alanı bağlantısı
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı