当前位置:  开发笔记 > 编程语言 > 正文

Aurelia中的打字稿自动注入

如何解决《Aurelia中的打字稿自动注入》经验,为你挑选了1个好方法。



1> Venkat.R..:

@autoInject()如何工作?

在您需要了解TypeScript的emitDecoratorMetadata标志之前,TypeScript编译器会对Metadata Reflection API进行填充,并为已转换的TypeScript代码添加特殊的装饰器定义.

Aurelia的@autoInject()装饰器使用TypeScript的装饰器创建的类型元数据,并以与@inject(...)装饰器相同的方式将其应用于类.

尝试如下,您需要启用compilerOptions类型脚本中的新选项.

TS配置:

{
    "version": "1.5.1",
    "compilerOptions": {
        "target": "es5",
        "module": "amd",
        "declaration": false,
        "noImplicitAny": false,
        "removeComments": false,
        "noLib": true,
        "emitDecoratorMetadata": true
    },
    "filesGlob": [
        "./**/*.ts",
        "!./node_modules/**/*.ts"
    ],
    "files": [
        // ...
    ]
}

文章的片段截图:

在此输入图像描述

关于emitDecoratorMetadata的文章:
http : //blog.durandal.io/2015/05/06/getting-started-with-aurelia-and-typescript/ http://www.danyow.net/inversion-of-control-with-奥里利亚部分-2 /

可用类型脚本选项:https:
//github.com/Microsoft/TypeScript/wiki/Compiler-Options

您可以使用Gulp-Typescript以及Gulp选项来完成

选项:https://github.com/ivogabe/gulp-typescript#options
GitHub问题主题:https://github.com/ivogabe/gulp-typescript/issues/100

Gulp Code Snippet:gulp.task('build-ts',[],function(){

  return gulp.src(paths.typescript)
    .pipe(plumber())
    .pipe(changed(paths.output, {extension: '.js'}))
    .pipe(sourcemaps.init())
    .pipe(ts({
      declarationFiles: false,
      noExternalResolve: true,
      target: 'es5',
      module: 'commonjs',
      emitDecoratorMetadata: true,
      typescript: typescript
    }))
    .pipe(sourcemaps.write())
    .pipe(gulp.dest(paths.output));
});

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有