2016-04-28 3 views
0

Я в ситуации, когда хотел бы определить тип общего типа, предоставляемого универсальному классу. Например, предполагая у меня есть тип профсоюза, я хотел бы, чтобы различные действия в конструкторе на основе типа используемого:Определить тип параметра типа класса Типcт

type MyType = string | number; 
class Foo<T extends MyType>{ 
    private _something; 
    constructor(_bar?: SomeFunc<T>){ 
      if(...)? 
    } 
} 

Из advanced type section я знаю, что могу определить тип параметров функций, но я не могу найти способ выполнить проверку типа общего, предоставленного фактическому классу. Попытка ссылаться на T каким-либо образом приводит к «не может найти имя« T »error (# TS2304). Я нашел несколько сообщений such as this one, но все они, похоже, имеют дело с параметрами функции, на которые была предоставлена ​​первая ссылка.

это не представляется возможным, так как она все больше кажущейся таким образом, есть еще один образец, который я могу использовать здесь?

ответ

0

Я хотел бы определить тип универсального типа предоставленного обобщенного класса

Дженерики удалены во время выполнения. annot использовать T во время проверки.

+0

Благодарим вас, и я понимаю, что я ищу больше времени для компиляции, которое я мог бы использовать, чтобы выбрать метод последующей работы. –

+0

@ AndrewHunter вам нужно предоставить больше *, что вы хотите *, но общая идея заключается в том, что вы также даете экземпляр 'T', например. 'constructor (_bar ?: SomeFunc , someInstance: T) {', и вы можете сделать проверку на 'someInstance' – basarat

+0

спасибо за ответ, я надеялся попытаться уйти от предоставления экземпляра, но кажется, что это не так возможно в машинописном тексте. Я буду использовать этот шаблон, спасибо еще раз. –

Смежные вопросы