이 튜토리얼 에서 샘플 템플릿 코드를 추출 하고 시작하기 위해 아래 두 단계를 수행했습니다.
npm install // worked fine and created node_modules folder with all dependencies
npm start
// 아래 오류로 실패했습니다.node_modules/rxjs/Subject.d.ts(16,22): error TS2415: Class 'Subject<T>' incorrectly extends base class 'Observable<T>'. Types of property 'lift' are incompatible. Type '<T, R>(operator: Operator<T, R>) => Observable<T>' is not assignable to type '<R>(operator: Operator<T, R>) => Observable<R>'. Type 'Observable<T>' is not assignable to type 'Observable<R>'. Type 'T' is not assignable to type 'R'. npm ERR! code ELIFECYCLE npm ERR! errno 2
subject.d.ts에서 리프트 선언은 다음과 같습니다.
lift<T, R>(operator: Operator<T, R>): Observable<T>;
그리고 Observable.ts에서는 아래와 같이 정의됩니다.
lift<R>(operator: Operator<T, R>): Observable<R> {
참고 :-1. 저는 Angular2를 처음 접했고 사물을 파악하려고합니다.
리프트 방법의 호환되지 않는 정의로 인해 오류가 발생할 수 있습니다.
이 github 스레드를 읽었습니다.
다른 버전의 rxjs를 설치해야하는 경우 올바른 rxjs를 제거하고 설치하는 방법을 알려주십시오.
Edit1 : 여기서 응답하는 데 약간 늦을 수 있지만 typescript 2.3.4 또는 rxjs 6 alpha를 사용한 후에도 여전히 동일한 오류가 발생 합니다. 아래는 내 package.json입니다.
{
"name": "angular-quickstart",
"version": "1.0.0",
"scripts": {
"start": "tsc && concurrently \"npm run tsc:w\" \"npm run lite\" ",
"lite": "lite-server",
"postinstall": "typings install",
"tsc": "tsc",
"tsc:w": "tsc -w",
"typings": "typings"
},
"license": "ISC",
"dependencies": {
"@angular/common": "2.0.0",
"@angular/compiler": "2.0.0",
"@angular/core": "2.0.0",
"@angular/forms": "2.0.0",
"@angular/http": "2.0.0",
"@angular/platform-browser": "2.0.0",
"@angular/platform-browser-dynamic": "2.0.0",
"@angular/router": "3.0.0",
"@angular/upgrade": "2.0.0",
"core-js": "^2.4.1",
"reflect-metadata": "^0.1.3",
"rxjs": "6.0.0-alpha.0",
"systemjs": "0.19.27",
"zone.js": "^0.6.23",
"angular2-in-memory-web-api": "0.0.20",
"bootstrap": "^3.3.6"
},
"devDependencies": {
"concurrently": "^2.2.0",
"lite-server": "^2.2.2",
"typescript": "2.3.4",
"typings": "^1.3.2"
}
}