Angular 2 불투명 토큰 대 Angular 4 주입상품권
InjectionToken
Angular 4에 소개되었고,OpaqueToken
사용되지 않는 것으로 표시되었습니다.
설명서에 따르면, 그것은 다음과 같이 사용되어야 합니다.
const anyToken = new InjectionToken('any');
입력되지 않은 토큰의 경우 및
const numberToken = new InjectionToken<number>('number');
입력된 토큰의 경우.
하지만, 타이핑된 토큰은 여전히 주입될 때 다른 유형으로 주입되고 사용될 수 있는데, TypeScript는 이것으로 괜찮을 것입니다, 그렇지 않나요?
constructor(@Inject(numberToken) any, @Inject(numberToken) string: string) { ... }
어떻게 있다.InjectionToken
TypeScript 유형 시스템의 혜택을 받아야 합니까?
왜 그랬을까요?OpaqueToken
그 둘 사이에 실질적인 차이가 없다면 더 이상 추천되지 않는 것입니까?
의 내부 사용을 기준으로 함InjectionToken
예를 들어, 여기서, 나는 가정합니다.InjectionToken
다음을 통해 종속성을 얻을 때 유형 검사 이점을 제공합니다.injector
인스턴스:
import {Component, InjectionToken, Injector} from "@angular/core";
interface AppConfig {
name: string;
}
let APP_CONFIG = new InjectionToken<AppConfig>('app.config');
let appConfig: AppConfig = {name: 'Cfg'};
@Component({
...
providers: [{provide: APP_CONFIG, useValue: appConfig}]
})
export class TestComponent {
constructor(injector: Injector) {
const config = injector.get(APP_CONFIG);
config.s = 'd';
^^^^^ - Error:(14, 16) TS2339:Property 's' does not exist on type 'AppConfig'.
}
}
언급URL : https://stackoverflow.com/questions/43419050/angular-2-opaquetoken-vs-angular-4-injectiontoken
'programing' 카테고리의 다른 글
Java 레코드를 @Service / @RestController 주석과 함께 사용해도 됩니까? (0) | 2023.06.26 |
---|---|
헤로쿠를 위한 레일즈, 몽고이드 및 유니콘 구성. (0) | 2023.06.26 |
Mongoose와 함께 _id로 검색 (0) | 2023.06.26 |
사전 보기 개체란 무엇입니까? (0) | 2023.06.26 |
C/C++ 애플리케이션의 메모리 누수를 감지하기 위해 Mac OS X Mountain Lion 및 Mavericks에서 Valgrind를 대체할 방법이 있습니까? (0) | 2023.06.26 |