如何在Angular中将.js文件与声明.d.ts一起使用

时间:2019-11-27 13:25:23

标签: angular typescript typescript-typings

我有Angular 7应用程序,我想从项目外部包括一些类型化的JS常量(这些常量在AngularJS应用程序中使用,因此我需要将其保留在js中)。我在tsconfig.json中的路径中定义了新路径

{
  "compileOnSave": false,
  "compilerOptions": {
    "allowJs": true,
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "noImplicitAny": true,
    "suppressImplicitAnyIndexErrors": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2017",
      "dom"
    ],
    "baseUrl": "src",
    "paths": {
      "@app/*": ["app/*"],
      "@env/*": ["environments/*"],
      "@dep/*": ["../../web-common/*"]
    }
  }
} 

在@dep中,我具有包含以下内容的test.js和test.d.ts

export const TEST_CONST = {
  parser: 'CSV',
  styler: 'XVE'
};

export interface TEST_CONST {
  parser: string;
  styler: number;
}

但是当我导入它并开始使用

import {TEST_CONST} from '@dep/constants/test';

...

console.log(TEST_CONST.styler);

它给了我

  

错误TS2693:“ TEST_CONST”仅引用一种类型,但在此处用作值。

我也尝试导入' @ dep / constants / test.js ',但这是相同的...。 如何将带有类型的js文件导入Angular应用中?据我了解,这应该是可能的。

1 个答案:

答案 0 :(得分:0)

尝试添加declare并删除export

declare interface TEST_CONST {
  parser: string;
  styler: number;
}