Ответ 1
Нет никакой гарантии, что ваши типы совместимы, поэтому вам нужно выполнить двойное литье в соответствии с приведенным ниже...
class class1 {
constructor(public owner: number) {
}
}
class Example<T> {
add(element: T) {
if (element instanceof class1) {
(<class1><any>element).owner = 100;
}
}
}
Конечно, если вы используете общие ограничения типа, вы можете удалить бросок и проверку...
class class1 {
constructor(public owner: number) {
}
}
class Example<T extends class1> {
add(element: T) {
element.owner = 100;
}
}
В качестве ограничения используется class1
, но вы можете решить использовать интерфейс, который должен удовлетворять любой класс, например, он должен иметь свойство с именем owner
типа number
.