Angular 7无法包含自定义打字稿定义文件

Ami*_*ube 3 types typescript angular angular7

我创建了一个自定义的打字稿定义文件(brat.d.ts)

export declare class head {
   ready(callback: () => any);
}

export declare class Util {
   static embed(divId: string, collData: any, docData: any, webFontsURLs: Array<string>);
}
Run Code Online (Sandbox Code Playgroud)

我正在像这样在Angular 7组件中导入上述定义文件

import {head, Util} from "../../brat/brat";
Run Code Online (Sandbox Code Playgroud)

当我上菜时,出现以下错误

'在./src/app/folder-mgmt/list-documents/list-documents.component.ts中 找不到错误:错误:无法在'\ src \中解析'../../brat/brat' app \ folder-mgmt \ list-documents'`

有人可以建议我做错了什么吗

Laz*_*vić 6

您在.d.ts文件中添加声明,它们在您的项目中变得全局可用。但是您tsconfig.json首先需要进行调整,添加以下内容:

"files": [
  "additional.d.ts"
]
Run Code Online (Sandbox Code Playgroud)

现在创建一个./addition.d.ts文件(相对于TypeScript项目根目录),然后在其中添加键入内容。不使用export符号,仅声明类型。

declare class head {
   ready(callback: () => any);
}

declare class Util {
   static embed(divId: string, collData: any, docData: any, webFontsURLs: Array<string>);
}
Run Code Online (Sandbox Code Playgroud)

现在,您将在全球范围内使用它们。

如果您不希望它们在全球范围内可用,而是为缺少它们的模块添加类型,请在模块内声明它们。

declare 'module-name' {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

现在,TypeScript将在您识别时识别出这些import { ... } from 'module-name'


Ami*_*ube 3

为了解决这个问题我做了以下

我从自定义打字稿定义文件 (brat.d.ts) 文件中删除了导出并将其更改为

declare class head {
   static ready(callback: () => any);
}
declare class Util {
   static embed(divId: string, collData: any, docData: any, webFontsURLs: Array<string>);
}
Run Code Online (Sandbox Code Playgroud)

使用 Angular CLI 创建的 Angular 项目在项目的根文件夹中有 tsconfig.json 文件。

我在 tsconfig.json 中“compilerOptions”的“typeRoots”属性中添加了包含自定义文件的文件夹路径。

在此输入图像描述

在 Angular 组件中,我删除了用于导入自定义打字稿定义文件的导入语句(在我的例子中为“brat.d.ts”)