TypeScript: diğerine bağlı bir arayüz özelliği
Aug 15 2020
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 Aug 15 2020 at 23:39
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ı
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'