将Ionic 2迁移到Typescript 2.0 RC

时间:2016-09-01 13:40:26

标签: angular ionic2 typescript2.0

目前我正在使用Ionic 2.0.0-beta.37。其中使用的是typescript 1.8.x.我尝试使用打字稿来尝试D3版本4,但d3-v4-definitelytyped的打字使用的是Typescript 2.x.我在打字上遇到编译错误,在d3-v4-definitelytyped repo上发出问题之后,我了解到我需要在Ionic 2项目中使用TS 2.x.

这是我得到的错误:

TypeScript error: /Users/arash1/Projects/brite-front-end/node_modules/@types/d3-axis/index.d.ts(150,30): Error TS1110: Type expected.
TypeScript error: /Users/arash1/Projects/brite-front-end/node_modules/@types/d3-axis/index.d.ts(167,24): Error TS1110: Type expected.
TypeScript error: /Users/arash1/Projects/brite-front-end/node_modules/@types/d3-axis/index.d.ts(173,55): Error TS1110: Type expected.
TypeScript error: /Users/arash1/Projects/brite-front-end/node_modules/@types/d3-axis/index.d.ts(191,24): Error TS1110: Type expected.
TypeScript error: /Users/arash1/Projects/brite-front-end/node_modules/@types/d3-brush/index.d.ts(30,37): Error TS1110: Type expected.
TypeScript error: /Users/arash1/Projects/brite-front-end/node_modules/@types/d3-chord/index.d.ts(38,56): Error TS1110: Type expected.
TypeScript error: /Users/arash1/Projects/brite-front-end/node_modules/@types/d3-chord/index.d.ts(39,25): Error TS1110: Type expected.
TypeScript error: /Users/arash1/Projects/brite-front-end/node_modules/@types/d3-chord/index.d.ts(41,59): Error TS1110: Type expected.

我查看了我的主IONIC目录中的package.json文件,但我没有看到typescript作为依赖项,因此我认为它正在使用其他内容来定义版本。我明白了:

  • " ionic-gulp-browserify-typescript":" 2.0.0"
  • " tslint-ionic-rules":" ^ 0.0.3"
  • " tsify":" 0.16.0"

所以我进入tslint-ionic-rules并看到:

"devDependencies": {
    "typescript": "^1.8.10"
  }

我只是试图npm install typescript@rctslint-ionic-rules node_modules中安装新版本,看看是否收到同样的错误。错误仍然存​​在。

有人可以就如何提供指导吗?最近在MFST Blog宣布了RC。

1 个答案:

答案 0 :(得分:0)

在我开始之前,我还没有完全解决问题,但我至少可以解释一下我的尝试。 确切地说,我没有在我的gulp.file中使用lint,但我确实注意到ionic2使用了browserify,当你查看ionic-gulp-browserify-typescript模块时,你可以看到:

tsifyOptions:{}

您可以使用它来设置您要使用的TS版本。

示例:

  1. 在本地安装typescript 2.x
  2. 在构建任务中添加tsifyOptions:{}
  3. 看起来应该是这样的:

    gulp.task('build', ['clean'], function(done){
      runSequence(
        ['sass', 'html', 'fonts', 'scripts'],
        function(){
          buildBrowserify({
            minify: isRelease,
            browserifyOptions: {
              debug: !isRelease
            },
            uglifyOptions: {
              mangle: false
            },
            tsifyOptions: {
              typescript: require('your typescript')
            }
          }).on('end', done);
        }
      );
    });