在Typescript类型定义中Jasmine的重复签名

时间:2016-10-18 23:49:27

标签: typescript typescript-typings

打字文件:

{
  "globalDependencies": {
    "bootstrap": "registry:dt/bootstrap#3.3.5+20160619023404",
    "c3": "registry:dt/c3#0.0.0+20160926143332",
    "d3": "registry:dt/d3#0.0.0+20160907005744",
    "headroom": "registry:dt/headroom#0.7.0+20161003183126",
    "jasmine": "registry:dt/jasmine#2.5.0+20161003201800", // IF I REMOVE THIS LINE, I GET NO ERRORS.
    "jasmine-jquery": "registry:dt/jasmine-jquery#0.0.0+20160317120654",
    "jquery": "registry:dt/jquery#1.10.0+20160929162922",
    "lodash": "registry:dt/lodash#4.14.0+20161004174455",
    "modernizr": "registry:dt/modernizr#3.2.0+20160215162030",
    "nouislider": "registry:dt/nouislider#8.0.2+20160412140110",
    "riot-ts": "file:typings/custom/riot-ts.d.ts",
    "riotjs": "registry:dt/riotjs#0.0.0+20160316155526",
    "tf.custom": "file:typings/custom/tf.custom.d.ts",
    "wnumb": "registry:dt/wnumb#1.0.0+20160316155526"
  },
  "dependencies": {
    "requirejs": "registry:npm/requirejs#2.2.0+20160319062357"
  }
}

从Typescript编译器中获取一些重复的错误。抱怨重复的字符串/索引签名。

在node_modules内部有一个@types目录,我来自protractor module。有jasmine打字的副本,在我的情况下不需要。

我可以从打字中删除安装调用jasmine,但这会弄乱我的IDE。如何告诉Typescript忽略@types目录?

gulp tsify使用的TSconfig:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "declaration": false,
    "noImplicitAny": false,
    "removeComments": true,
    "noLib": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true
  },
  "exclude": [
    "node_modules",  // this should fix the problem, but doesn't. If I remove this line, I get even more errors.
    "vendor",
    "gulp",
    "typings"
  ]
}

错误:

   { [TypeScript error: node_modules/@types/jasmine/index.d.ts(74,9): Error TS2375: Duplicate number index signature.]
  message: '../node_modules/@types/jasmine/index.d.ts(74,9): Error TS2375: Duplicate number index signature.',
  fileName: '../node_modules/@types/jasmine/index.d.ts',
  line: 74,
  column: 9,
  name: 'TypeScript error' }

节点模块 enter image description here

分型 enter image description here

打包json

{
  "license": "UNLICENSED",
  "private": true,
  "devDependencies": {
    "alterclass": "git+https://github.com/sidouglas/alter-class#1.0",
    "babel": "^6.5.2",
    "babel-core": "^6.10.4",
    "babel-preset-es2015": "^6.9.0",
    "babel-register": "^6.9.0",
    "bootstrap-pull": "git+https://github.com/sidouglas/bootstrap-pull.git#3.0.3",
    "browserify-shim": "^3.8.12",
    "dot-object": "^1.4.1",
    "elixir-jasmine": "0.0.4",
    "factor-bundle": "^2.5.0",
    "fs-symlink": "^1.2.1",
    "gulp": "^3.9.1",
    "gulp-replace-task": "^0.11.0",
    "gulp-tslint": "^6.1.1",
    "jasmine-fixture": "^2.0.0",
    "jasmine-jquery": "^2.1.1",
    "jsonminify": "^0.4.1",
    "karma": "^1.1.1",
    "karma-chrome-launcher": "^1.0.1",
    "karma-firefox-launcher": "^1.0.0",
    "karma-ios-simulator-launcher": "0.0.4",
    "karma-jasmine": "^1.0.2",
    "karma-phantomjs-launcher": "^1.0.2",
    "karma-safari-launcher": "^1.0.0",
    "laravel-elixir": "^6.0.0-11",
    "laravel-elixir-bless": "^2.0.0",
    "laravel-elixir-browserify-official": "^0.1.3",
    "laravel-elixir-browsersync": "^0.1.5",
    "laravel-elixir-browsersync-official": "^1.0.0",
    "laravel-elixir-remove": "^0.2.1",
    "laravel-elixir-replace": "^1.1.2",
    "laravel-elixir-scss-lint": "^1.3.1",
    "node-sass": "^3.8.0",
    "precommit-hook": "^3.0.0",
    "protractor": "^4.0.9",
    "replace": "^0.3.0",
    "retyped-bowser-tsd-ambient": "0.0.0-0",
    "run-sequence": "^1.2.1",
    "sass-convert": "^0.5.2",
    "shelljs": "^0.7.4",
    "supplant": "^0.2.0",
    "tsify": "^2.0.1",
    "tslint": "^3.15.1",
    "typescript": "^2.0.3",
    "typings": "^1.4.0",
    "webdriver-manager": "^10.2.4",
    "yargs": "^4.8.0"
  },
  "dependencies": {
    "basename": "^0.1.2",
    "boilerplate": "^0.5.0",
    "bootstrap": "^3.3.6",
    "bootstrap-sass": "^3.3.6",
    "bootstrap-select": "^1.10.0",
    "bowser": "^1.4.2",
    "c3": "^0.4.11",
    "d3": "^4.2.6",
    "del": "^2.2.0",
    "factor-bundle": "^2.5.0",
    "gulp-change": "^1.0.0",
    "gulp-shell": "^0.5.2",
    "headroom.js": "^0.9.3",
    "include-media": "^1.4.5",
    "jquery": "^2.2.4",
    "jquery-replace-class": "0.0.1",
    "lodash": "^4.14.0",
    "nouislider": "^8.5.1",
    "partition-bundle": "^2.5.0",
    "redux": "^3.6.0",
    "requirejs": "^2.2.0",
    "riot": "^2.5.0",
    "riot-ts": "git://github.com/tfsimondouglas/riot-ts.git",
    "webshim": "^1.15.10",
    "wnumb": "git://github.com/tannerhodges/wnumb"
  },
  "scripts": {
    "build": "node node_modules/.bin/gulp --production",
    "gulp": "node node_modules/.bin/gulp",
    "kill": "for pid in `ps -ef | grep gulp | awk '{print $2}'` ; do kill -9 $pid ; done",
    "postinstall": "node node_modules/.bin/typings install && ./node_modules/.bin/webdriver-manager update && gem install scss_lint",
    "protractor": "node node_modules/protractor/bin/webdriver-manager start && node node_modules/.bin/protractor protractor.conf.js",
    "restart": "npm run kill & npm start",
    "scsslint": "scss-lint ./resources/assets/sass/widgets/**/*.scss --config .scss-lint.yml",
    "start": "npm run watch",
    "test": "npm run gulp && ./node_modules/.bin/karma start --single-run --browsers PhantomJS",
    "tslint": "./node_modules/.bin/tslint ./resources/**/*.ts  -c ./gulp/ts.lint.json --exclude ./resources/views/cms/widgets/product-search-natural-language/**/*.ts",
    "watch": "node node_modules/.bin/gulp watch",
    "validate": "npm ls",
    "lint": "jshint ."
  },
  "pre-commit": [
    "scsslint",
    "tslint"
  ]
}

1 个答案:

答案 0 :(得分:15)

根据tsconfig文档中的@typestypeRootstypes部分:

  

指定"types": []以禁用自动包含@types个包。

像这样:

{
   "compilerOptions": {
       "types" : []
   }
}