Typescript:无法在构造函数中使用:notation编译文件

时间:2016-02-26 16:57:40

标签: javascript typescript angular

我正在关注Ionic(使用Angular 2)应用程序的一些示例。 所有类的构造函数都有:

export class UserService {
    constructor(http: Http) {
        this.http = http;
    }
}

但编译器输出此错误:

Unexpected token (14:17)
  12 |  }
  13 | 
> 14 |  constructor(http: Http)
at Parser.pp.raise (/home/cbenseler/dev/apps/expressoapp/node_modules/babylon/index.js:1425:13)

这可能与我的应用程序(使用babel和webpack)的设置有关,但我找不到问题所在。

webpack.config.js文件包含:

module: {
    loaders: [
      {
        test: /\.js$/,
        loader: 'babel',
        query: {
          presets: ['es2015'],
          plugins: ['transform-decorators-legacy']
        },
        include: path.resolve('app'),
        exclude: /node_modules/
      },
      {
        test: /\.js$/,
        include: path.resolve('node_modules/angular2'),
        loader: 'strip-sourcemap'
      }
    ],
    noParse: [
      /es6-shim/,
      /reflect-metadata/,
      /zone\.js(\/|\\)dist(\/|\\)zone-microtask/
    ]
  }

任何人都有任何想法?

1 个答案:

答案 0 :(得分:1)

我会看到一件可能会遗漏的事情:

  • 您忘记导入Http类,因此编译器无法解析它:

    import {Http} from 'angular2/http';
    

修改

如果仅使用ES6(似乎是这种情况),则可以在参数级别使用type。要注入这种情况,您需要使用这种方法:

@Injectable()
export class UserService {
  constructor(http) {
    this.http = http;
  }

  static get parameters() {
    return [[Http]];
  }
}

有关详细信息,请参阅以下链接: