#typescript #typescript4.0
#typescript #typescript4.0
Вопрос:
Предположим, нам нужно реализовать следующее:
export class Class1<T> {
public constructor(param1: T) {
param1.prop1 = 1; // TS error: T doesn't have property 'prop1'
}
}
Учитывая, что мы не можем наследовать все возможные param1
от одного базового interface
`класса`, как ограничить T
?
Я пробовал T extends { prop1: number }
, но это неправильный синтаксис для TS.
Комментарии:
1. Это действительно допустимо:
export class Class1<T extends { prop1: number }> {
2. @zerkms Вы правы. Кажется, у меня возникли некоторые проблемы со встроенной проверкой ошибок VS Code.
Ответ №1:
Решение, которое я дал в вопросе, является правильным:
export class Class1<T extends { prop1: number }> {
public constructor(param1: T) {
param1.prop1 = 1; // No TS error now
}
}
Кажется, у меня возникли некоторые проблемы со встроенной проверкой ошибок VS Code.