2017-01-16 2 views
1

В angular1 у нас был только тип токенов для провайдеров - строк. В angular2 все примеры, которые я видел, похоже, используют токены класса. Например:Каковы правильные типы токенов для DI

class Car {} 

var injector = ResolveInjector.resolveAndCreate([ 
    { provide: Car, useClass: Car }, 
      ^^^ 
    { provide: Engine, useClass: Engine } 
]); 

Мне интересно, каковы допустимые типы токенов? Могут ли они использоваться на основе типов данных типа TypeScript или типов данных JavaScript? При разрешении зависимостей угловой uses metadata. Таким образом, допустимыми типами токенов являются те, которые действительны внутри метаданных?

ответ

1
+0

спасибо, что о 'Object' лексемы из документации _Using OpaqueToken предпочтительнее использовать «Object» в качестве токенов, потому что он обеспечивает улучшенные сообщения об ошибках ._? –

+0

Извините, я не могу понять это предложение. Предложение перед тем, как «OpaqueToken» предпочтительнее использовать строки ». Это имеет смысл, потому что 'OpaqueToken' может указывать на источник, где он объявлен, а неправильный импорт вызовет ошибки. Строки дублируются, если не используется глобальная константа, и когда строка изменяется в одном месте, ее можно забыть и о других. –

+0

Я создал https://github.com/angular/angular/issues/13944 –