@types/webrtc 的打字稿错误

Dan*_*nny 3 webrtc typescript angular

在我的 Angular 2 项目中,我尝试使用 typescript 和 @types/webrtc。@types/webrtc 的版本为 0.0.21 如果我使用任何高于 2.1.5 的 typescript 版本,我会收到很多 webrtc 编译错误。

这是我的 package.json 文件:

{
"name": "d3",
"version": "0.0.0",
"license": "MIT",
"scripts": {
    "start": "ng serve",
    "lint": "tslint \"src/**/*.ts\"",
    "test": "ng test",
    "pree2e": "webdriver-manager update",
    "e2e": "protractor"
},
"private": true,
"dependencies": {
    "@angular/cli": "1.0.3",
    "@angular/common": "4.1.2",
    "@angular/animations": "4.1.2",
    "@angular/compiler": "4.1.2",
    "@angular/compiler-cli":"4.1.2",
    "@angular/core": "4.1.2",
    "@angular/forms": "4.1.2",
    "@angular/http": "4.1.2",
    "@angular/platform-browser": "4.1.2",
    "@angular/platform-browser-dynamic": "4.1.2",
    "@angular/router": "4.1.2",
    "@angular/material": "2.0.0-beta.5",
    "@types/hammerjs": "2.0.34",
    "hammerjs": "2.0.8",
    "angular2-material-datepicker": "0.5.0",
    "core-js": "2.4.1",
    "primeng": "4.0.1",
    "rxjs": "5.4.0",
    "ts-helpers": "1.1.2",
    "zone.js": "0.8.10"
},
"devDependencies": {
    "@types/jasmine": "2.5.47",
    "@types/node": "7.0.18",
    "@types/webrtc": "0.0.21",
    "angular2-template-loader": "0.6.2",
    "codelyzer": "3.0.1",
    "jasmine-core": "2.6.1",
    "jasmine-spec-reporter": "4.1.0",
    "karma": "1.7.0",
    "karma-chrome-launcher": "2.1.1",
    "karma-cli": "1.0.1",
    "karma-jasmine": "1.1.0",
    "karma-remap-istanbul": "0.6.0",
    "protractor": "5.1.2",
    "ts-node": "3.0.4",
    "tslint": "5.2.0",
    "typescript": "2.3.2",
    "webdriver-manager": "12.0.6"
}
}
Run Code Online (Sandbox Code Playgroud)

以下是编译错误:

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (31,6): Duplicate identifier 'RTCSdpType'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (35,5): All declarations of 'type' must have identical modifiers.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (41,14): All declarations of 'type' must have identical modifiers.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (42,14): All declarations of 'sdp' must have identical modifiers.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (49,6): Duplicate identifier 'RTCIceProtocol'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (52,6): Duplicate identifier 'RTCIceCandidateType'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (55,6): Duplicate identifier 'RTCIceTcpCandidateType'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (59,5): All declarations of 'candidate' must have identical modifiers.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (66,14): All declarations of 'candidate' must have identical modifiers.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (67,14): All declarations of 'sdpMid' must have identical modifiers.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (68,14): All declarations of 'sdpMLineIndex' must have identical modifiers.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (90,6): Duplicate identifier 'RTCSignalingState'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (93,6): Duplicate identifier 'RTCIceGatheringState'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (96,6): Duplicate identifier 'RTCIceConnectionState'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (113,6): Duplicate identifier 'RTCIceTransportPolicy'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (116,6): Duplicate identifier 'RTCBundlePolicy'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (122,6): Duplicate identifier 'RTCIceRole'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (125,6): Duplicate identifier 'RTCIceComponent'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (128,6): Duplicate identifier 'RTCIceTransportState'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (153,6): Duplicate identifier 'RTCDtlsTransportState'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (204,5): All declarations of 'maxFramerate' must have identical modifiers.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (231,6): Duplicate identifier 'RTCDegradationPreference'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (401,6): Duplicate identifier 'RTCSessionDescriptionCallback'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (405,6): Duplicate identifier 'RTCPeerConnectionErrorCallback'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (409,6): Duplicate identifier 'RTCStatsCallback'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (432,14): All declarations of 'canTrickleIceCandidates' must have identical modifiers.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (438,5): Subsequent variable declarations must have the same type.  Variable 'onnegotiationneeded' must be of type '(this: RTCPeerConnection, ev: Event) => any', but here has type 'EventHandler'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (439,5): Subsequent variable declarations must have the same type.  Variable 'onicecandidate' must be of type '(this: RTCPeerConnection, ev: RTCPeerConnectionIceEvent) => any', but here has type '(event: RTCPeerConnectionIceEvent) => void'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (441,5): Subsequent variable declarations must have the same type.  Variable 'onsignalingstatechange' must be of type '(this: RTCPeerConnection, ev: Event) => any', but here has type 'EventHandler'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (442,5): Subsequent variable declarations must have the same type.  Variable 'oniceconnectionstatechange' must be of type '(this: RTCPeerConnection, ev: Event) => any', but here has type 'EventHandler'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (443,5): Subsequent variable declarations must have the same type.  Variable 'onicegatheringstatechange' must be of type '(this: RTCPeerConnection, ev: Event) => any', but here has type 'EventHandler'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (491,13): Subsequent variable declarations must have the same type.  Variable 'RTCPeerConnection' must be of type '{ new (configuration: RTCConfiguration): RTCPeerConnection; prototype: RTCPeerConnection; }', but here has type 'RTCPeerConnectionStatic'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (492,13): Subsequent variable declarations must have the same type.  Variable 'RTCSessionDescription' must be of type '{ new (descriptionInitDict?: RTCSessionDescriptionInit): RTCSessionDescription; prototype: RTCSes...', but here has type 'RTCSessionDescriptionStatic'.

ERROR in objs/node_modules/@types/webrtc/RTCPeerConnection.d.ts (493,13): Subsequent variable declarations must have the same type.  Variable 'RTCIceCandidate' must be of type '{ new (candidateInitDict?: RTCIceCandidateInit): RTCIceCandidate; prototype: RTCIceCandidate; }', but here has type 'RTCIceCandidateStatic'.

ERROR in objs/node_modules/@types/webrtc/MediaStream.d.ts (104,14): Duplicate identifier 'MediaStreamTrackState'.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (834,5): All declarations of 'candidate' must have identical modifiers.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (995,5): All declarations of 'maxFramerate' must have identical modifiers.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (1040,5): All declarations of 'type' must have identical modifiers.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (9048,5): All declarations of 'candidate' must have identical modifiers.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (9049,5): All declarations of 'sdpMLineIndex' must have identical modifiers.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (9050,5): All declarations of 'sdpMid' must have identical modifiers.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (9147,14): All declarations of 'canTrickleIceCandidates' must have identical modifiers.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (9241,5): All declarations of 'sdp' must have identical modifiers.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (9242,5): All declarations of 'type' must have identical modifiers.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (14254,11): Duplicate identifier 'RTCSessionDescriptionCallback'.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (14257,11): Duplicate identifier 'RTCPeerConnectionErrorCallback'.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (14260,11): Duplicate identifier 'RTCStatsCallback'.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (15011,6): Duplicate identifier 'MediaStreamTrackState'.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (15023,6): Duplicate identifier 'RTCBundlePolicy'.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (15024,6): Duplicate identifier 'RTCDegradationPreference'.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (15026,6): Duplicate identifier 'RTCDtlsTransportState'.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (15027,6): Duplicate identifier 'RTCIceCandidateType'.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (15028,6): Duplicate identifier 'RTCIceComponent'.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (15029,6): Duplicate identifier 'RTCIceConnectionState'.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (15032,6): Duplicate identifier 'RTCIceGatheringState'.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (15033,6): Duplicate identifier 'RTCIceProtocol'.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (15034,6): Duplicate identifier 'RTCIceRole'.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (15035,6): Duplicate identifier 'RTCIceTcpCandidateType'.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (15036,6): Duplicate identifier 'RTCIceTransportPolicy'.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (15037,6): Duplicate identifier 'RTCIceTransportState'.

ERROR in objs/node_modules/typescript/lib/lib.dom.d.ts (15038,6): Duplicate identifier 'RTCSdpType'.
Run Code Online (Sandbox Code Playgroud)

JTe*_*dor 6

目前官方还没有解决方案(或者至少我还没有找到)。但有一个很好的解决方法可以让您继续工作!

正如您在 DefinitiveTyped Github web 中的本期中所看到的,Varius 建议在 tsconfig.json 中的 compilerOptions 上添加一个奇妙的选项,以避免库检查。

"compilerOptions": {
    "skipLibCheck": true
    }
Run Code Online (Sandbox Code Playgroud)

我希望它对你也有效,对我也有效!