Я пытаюсь вставить npm url node_module в мой сервис на Angular.
Я знаю, что могу просто сделать:
import * as url from 'url';
и может использовать его в моем классе следующим образом:
url.format(); //using it
Хотя я хочу внедрить его, так как считаю, что должен быстрее отлавливать ошибки, заставляя все мои классы инициализироваться с их зависимостями в конструкторе.
Я знаю, что могу использовать жетоны инжектора с интерфейсом и использовать Value для ввода простых значений.
interface MyInterface {
property: string
}
const JS_PRETEND_TYPING = new InjectionToken<MyInterface>('small_desc');
const MY_VALUE = { a: 123 }
@NgModule({
providers: [ { provide: JS_PRETEND_TYPING, useValue: MY_VALUE } ]
});
Несмотря на то, что пакет url имеет типизацию, объявленную как модуль.
В пакете URL:
declare module "url" {
export interface UrlObject {
...
}
Так что я не могу этого сделать, потому что я получаю ошибку:
import * as url from 'url';
// ERROR: Cannot use namespace 'url' as a type. const
JS_PRETEND_TYPING_FOR_URL = new InjectionToken<url>('small_desc');
Как я могу внедрить пакет 'url' npm в мой сервис на Angular?
import * as url from 'url';
class MyService {
constructor(@Inject(JS_PRETEND_TYPING_FOR_URL) private url: url)
}