Angular 2 - @ types / js-base64 / index.d.ts'不是一个模块

时间:2017-01-31 15:27:05

标签: angular typescript

我需要在Angular 2 TS应用程序中解码base64字符串。我用npm安装了js-base64。 Base64 Github project

npm install --save @types/js-base64

当我在我的应用程序中包含该模块时,我收到以下错误

app/app.module.ts(15,26): error TS2306: File '<fullpath removed>/src/main/resources/static/node_modules/@types/js-base64/index.d.ts' is not a module.
app/login/authentication.service.ts(4,24): error TS2306: File '<fullpath removed>/src/main/resources/static/node_modules/@types/js-base64/index.d.ts' is not a module.

system.js.config.js import

'@types/js-base64': 'npm:@types/js-base64',

app.module.ts import

import { Base64 } from '@types/js-base64';

我可以使用以下内容验证该文件是否存在:

// Type definitions for js-base64 v2.1.9
// Project: https://github.com/dankogai/js-base64
// Definitions by: Denis Carriere <https://github.com/DenisCarriere>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped

/**
## TODO

add methods:
- [x] encode
- [x] encodeURI
- [x] decode
- [ ] atob
- [ ] btoa
- [ ] fromBase64
- [ ] toBase64
- [ ] utob
- [ ] btou
- [ ] noConflict
 */

declare module 'js-base64' {
    namespace JSBase64 {
        const Base64: Base64Static
        interface Base64Static {
            /**
             * .encode
             * @param {String} string
             * @return {String}
             */
            encode(base64: string): string;

            /**
             * .encodeURI
             * @param {String} string
             * @return {String}
             */
            encodeURI(base64: string): string

            /**
             * .decode
             * @param {String} string
             * @return {String}
             */
            decode(base64: string): string

            /**
             * Library version
             */
            VERSION:string
        }
    }
    export = JSBase64
}

此文件是否为有效模块?如果是这样,我错过了什么?如果没有,有人能指出我如何在Angular2 TS中解码base 64字符串的例子吗?谢谢!

修改

我找到了两个解决方法。

1。您可以在Angular 2 TS项目中包含vanilla js脚本

服务/组件:

declare var Base64: any;

的index.html

<script src="js/base64.js"></script>

如果JS库有一个构造函数,那么应该可以工作:

this.base64 = new Base64();

2。更好的解决方案是使用lib.d.ts中的本机TypeScript函数

组件/服务

let claims = atob(encodedClaims);

这将解码base64字符串。还有编码功能。

祝你好运!

0 个答案:

没有答案