Yanıtlar:
Anahtar kelime extendsyalnızca arayüzler ve sınıflar için kullanılabilir.
Yalnızca ek özelliklere sahip bir tür bildirmek istiyorsanız, kavşak türünü kullanabilirsiniz :
type UserEvent = Event & {UserId: string}
TypeScript 2.2 için GÜNCELLEME , artık tür bazı kısıtlamaları karşılıyorsa, nesne benzeri türü genişleten bir arabirime sahip olmak mümkündür :
type Event = {
name: string;
dateCreated: string;
type: string;
}
interface UserEvent extends Event {
UserId: string;
}
Diğer yönde çalışmaz - sözdizimi kullanmak istiyorsanız UserEventbir arayüz olarak değil, arayüz olarak bildirilmelidir .typeextends
Ve extend rastgele türlerle kullanmak hala imkansız - örneğin, Eventherhangi bir kısıtlama olmadan bir tür parametresi ise işe yaramaz .
interface A<T> extends B<T> {blar}Bir arabirim yalnızca statik olarak bilinen üyelerle bir nesne türünü veya nesne türlerinin kesişimini uzatabilir
interface Identifiable<T> extends T { id: string }bana hata veriyor "Bir arabirim yalnızca bir nesne türünü veya statik olarak bilinen
Ulaşmaya çalıştığınız şey şuna eşdeğerdir:
interface Event {
name: string;
dateCreated: string;
type: string;
}
interface UserEvent extends Event {
UserId: string;
}
Türleri tanımlama şekliniz kalıtımın belirlenmesine izin vermez, ancak artem'in işaret ettiği gibi kavşak türlerini kullanarak benzer bir şey elde edebilirsiniz .
interfaceaslında bir şey demek istediğim kelimeyi sevmiyorumtype
typeAnahtar kelime tanımlamak için kullanılır tipi takma adlarını , değil arabirimleri veya sınıfları.