Типовое имя универсального типа T как свойство

#angular #typescript #generics #typescript-generics

Вопрос:

Можно ли использовать тип параметра T в классе/интерфейсе в качестве имени свойства?

 export interface ISamplelt;Tgt; {  nameof(T) : T; lt;-- this property should have the name of the type T nameof(T)  otherProperties: any; }  

И используйте его вот так:

 const data: ISamplelt;Housesgt;() = lt;something to construct the objectgt; console.log(data.houses)  

Таково houses свойство data , которое было сгенерировано интерфейсом.

Ответ №1:

Машинопись-это система структурных типов. То есть система типов имеет дело со структурами, а не с именами, и типы могут не обязательно иметь имя, не говоря уже об уникальном.

Например, предположим, что вы должны были написать:

 interface Person {  name: string; }  interface Street {  name: string; }  

является

 ISamplelt;{name: string}gt;  

предполагается, что у вас есть person или есть street собственность?

Так что нет, того, о чем вы просите, не существует.

Вы, вероятно, захотите объявить:

 interface PersonSample {  person: Person; }  interface StreetSample {  street: Street; }  

или

 interface Samplelt;Tgt; {  sample: T; }